有时加载JavaScript

时间:2010-12-15 20:02:08

标签: javascript jquery onload

我想在给定的页面上有条件地加载一组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中运行的规范方式?

4 个答案:

答案 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文件之前将其包含在中。