在另一页上调用一个函数

时间:2011-10-24 08:47:44

标签: javascript jquery function call

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

我已经完成了这样的功能:

$(function () {
}):

但是如何确保每个页面上的功能都没有加载? 我只能调用我需要的功能吗?

4 个答案:

答案 0 :(得分:2)

保罗爱尔兰人有一个处理这个问题的好方法。看他的文章:

您基本上可以为每个页面创建一个结构,如下所示:

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

相应页面的代码只会触发:

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

为此,您需要为每个网页指定idbody标记:

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

答案 1 :(得分:1)

一种方法是将.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()那样调用函数,但显然你需要将函数调用放在一个你可以逐页控制的地方(例如在<head>中)页面的,或者包含不同的.js文件,如前面答案中所述。

答案 2 :(得分:0)

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

或者,您可以使用jQuery的getScript method;

加载脚本
$.getScript('url of ext js', function(data, textStatus) { 

});

答案 3 :(得分:0)

我无法理解你究竟要求的是什么,但也许我可以为你清楚一些事情 变量(函数)是否在不同的文件中声明无关紧要,重要的是声明它们的范围
换句话说,即使函数在不同的文件中,如果它们被声明为全局(不在闭包/函数/对象内),它们是可见的并且可以从任何地方调用。
全球职能之外:

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

如果你想“隐藏”这些功能,使它们在不同的范围内无法访问,你应该使用一个闭包。
在闭包中定义的函数的例外:

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

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