我做了很多功能。我把这些函数放在script.js文件中。但所有这些功能都在每页上加载。
我已经完成了这样的功能:
$(function () {
}):
但是如何确保每个页面上的功能都没有加载? 我只能调用我需要的功能吗?
答案 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 );
为此,您需要为每个网页指定id
到body
标记:
<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
我不知道我是否回答了你的问题,但我希望这会有所帮助。