【问题标题】:Call a function on a other page在其他页面调用函数
【发布时间】:2011-10-24 08:47:44
【问题描述】:

我做了很多功能。我将这些函数放在一个 script.js 文件中。但是所有这些功能都在每个页面上加载。

我做了这样的功能:

$(function () {
}):

但是如何确保函数不会在每个页面上加载? 我只能调用我需要的函数吗?

【问题讨论】:

  • 给函数起个名字,然后确保你在特定事件上调用函数,比如按钮点击、页面加载等。
  • 您需要为某些页面定义超出范围的函数或使用条件来加载或不加载函数...

标签: javascript jquery function call


【解决方案1】:

Paul Irish 有一个很好的方法来处理这个问题。见他的文章:

您基本上可以像这样为每个页面创建一个结构:

var siteNameSpace  = {
   homepage : {
      onload : function(){
         // do this stuff.
      }
   },
   contact : {
      onload : function(){
         // onload stuff for contact us page
      }
    }
};

并且相应页面的代码只会在以下情况下触发:

$(document).ready( siteNameSpace[ document.body.id ].onload );

为此,您需要为每个页面的body 分配一个id 标记:

<body id="home">
<body id="contactUs">
and so on

【讨论】:

    【解决方案2】:

    一种方法是将.js 文件拆分为模块,并且只包含与页面相关的.js 文件。

    在 jQuery 中,使用这样的方法可能更常见:

    $(function () {
    
        if (someCheck) {
            // do something
        }
    
        if (someCheck) {
            // do something else
        }
    
    });
    

    someChecks 通常会检查特定元素是否存在 (if ($(someSelector).length))。

    但是,为了具体回答您的问题,您应该为函数命名,然后调用它们,而不是拥有;

    $(function () {
      // do foo
    })
    

    你应该有

    function someName() {
      // do foo
    }
    

    然后你可以像someName()一样调用函数,但显然你需要把函数调用放在一个你可以按页面控制的地方(比如页面的&lt;head&gt;,或通过包含不同的 .js 文件,如答案前面所述。

    【讨论】:

      【解决方案3】:

      您可以创建几组外部 javascript 文件,将它们放在页面中任何需要的地方。

      您也可以使用 jQuery 的 getScript method 加载脚本;

      $.getScript('url of ext js', function(data, textStatus) { 
      
      });
      

      【讨论】:

        【解决方案4】:

        我无法真正理解您的确切要求,但也许我可以为您解决一些问题。
        变量(函数)是否在不同的文件中声明并不重要,重要的是它们在什么作用域中声明。
        换句话说,即使函数位于不同的文件中,如果它们被声明为全局的(而不是在闭包/函数/对象中),它们也是可见的并且可以从任何地方调用。
        全局函数的例子:

        function foo() {/*...*/}
        var bar = function(){/*...*/}
        window.func = function(){/*...*/}
        

        如果您想“隐藏”这些函数,使它们无法从不同的范围访问,您应该使用闭包。
        Ex of 闭包中定义的函数:

        function initialise {
           var foo = function(){}
           function bar(){}
           alert(typeof foo); // function
           alert(typeof bar); // function
           // foo & bar are visiblehere
        }
        alert(typeof foo); // undefined
        alert(typeof bar); // undefined
        // foo & bar are undefined here
        

        此外,如果您只想执行一次并且完全无法访问它们,您可以将它们包装在一个自执行函数中:

        (function(){
            function bar(){}
            alert(typeof bar);// function
            // bar is visible here
        })();
        // bar is undefined here
        

        我不知道我是否回答了你的问题,但我希望这些信息对你有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-03-07
          • 2018-06-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多