我想在给定的页面上有条件地加载一组javascript函数(涉及jQuery)。
情况是我们的网站上有很多东西发生在$(document).ready
上(主要是花哨的菜单设置和几个CSS类操作),但是一两页需要更多的设置。这是足够的代码(并且足够具体),我不想只是将它放入主文件中,而只是将它加载到那些特定的页面上。
我似乎无法通过将新文件specific.js
加载到包含
(function () {
$(something).click(function () { Stuff(happens); });
something(Else);
...
} ());
在上面的示例中,something(Else);
工作正常,但.click
和.bind
似乎没有做任何事情。我最终做的是
function specificStuff () {
$(something).click(function () { Stuff(happens); });
something(Else);
...
};
并将if(specificStuff) specificStuff();
添加到主js文件中。它有效,但似乎应该有一种更好的方法来实现这一点(理想情况是保持specific.js
中的所有更改而不触及常规设置)。
是否存在有条件地加载js代码以在document.ready
中运行的规范方式?
答案 0 :(得分:2)
您可以在网页/脚本文件中多次调用$(document).ready();
。只需将jquery绑定包装在specific.js
文件中:
$(document).ready(function(){
$(something).click(function () { Stuff(happens); });
something(Else);});
答案 1 :(得分:0)
您可以在这些页面的html中加载特定于页面的Javascript,每个脚本都有自己的document.ready函数。
答案 2 :(得分:0)
在将函数传递给document.ready时尝试删除():
(function () {
$(something).click(function () { Stuff(happens); });
something(Else);
...
} **()**);
使用(),它会立即执行 ,而不是等待文档准备就绪。
答案 3 :(得分:0)
您可以根据需要多次调用jquery文档就绪函数。我认为你的问题在于你如何设置你的功能。如果你试图调用ready函数,它应该是这样的:
$(function () {
$(something).click(function () { Stuff(happens); });
something(Else);
...
});
此外,如果您的main.js文件创建了something
元素,则应该在特定的.js文件之前将其包含在中。