有时加载 JavaScript
我想在给定页面上有条件地加载一组 javascript 函数(涉及 jQuery)。
情况是,我们的网站有很多发生在 $(document).ready
上的内容(主要是精美的菜单设置和一些 CSS 类操作),但是一两个页面需要更多设置。这是足够的代码(而且足够具体),我不想只是将其扔到主文件中,而是只是将其加载到那些特定的页面上。
看来我不能通过仅将新文件 specic.js
加载到包含
(function () {
$(something).click(function () { Stuff(happens); });
something(Else);
...
} ());
在上面的示例中的那些页面中来做到这一点, something(Else);
工作正常,但 .click
和 .bind
似乎没有做任何事情。我最终要做的是
function specificStuff () {
$(something).click(function () { Stuff(happens); });
something(Else);
...
};
将 if(specialStuff) SpecificStuff();
添加到主 js 文件中。它有效,但似乎应该有一种更好的方法来实现这一点(理想的情况是,将所有更改保留在 special.js
中,而不触及常规设置)。
是否有条件加载 js 代码以在 document.ready
中运行的规范方法?
I'd like to conditionally load a set of javascript functions (which involve jQuery) on a given page.
The situation is that our site has a bunch of stuff that happens on $(document).ready
(mostly fancy menu setup and a couple of CSS class manipulations), but one or two pages need more setup. It's enough code (and specific enough) that I don't want to just toss it into the main file, but rather just load it on those specific pages.
It seems that I can't do this by just loading a new file specific.js
into those pages that contains
(function () {
$(something).click(function () { Stuff(happens); });
something(Else);
...
} ());
In the above example, something(Else);
works fine, but .click
and .bind
don't seem to do anything. What I ended up doing is
function specificStuff () {
$(something).click(function () { Stuff(happens); });
something(Else);
...
};
and adding if(specificStuff) specificStuff();
to the main js file. It works, but it seems like there should be a better way of accomplishing this (ideally one that would keep all the changes in specific.js
and not touch the general settings).
Is there a canonical way of conditionally loading js code to run in document.ready
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以在网页/脚本文件中多次调用
$(document).ready();
。只需将 jquery 绑定包装在special.js
文件中即可:$(document).ready(function(){
$(something).click(function () { Stuff(发生); });
某事(其他);});
You can call
$(document).ready();
multiple times in a web page/script file. Just wrap your jquery bindings as such in yourspecific.js
file:$(document).ready(function(){
$(something).click(function () { Stuff(happens); });
something(Else);});
您可以在这些页面的 html 中加载页面特定的 Javascript,每个脚本都有自己的 document.ready 函数。
You can load the page specific Javascript in the html of those pages, each script with its own document.ready function.
尝试在将函数传递给 document.ready 时删除 ():
使用 (),它将立即执行,而不是等待文档准备好。
try removing the () when passing a function to document.ready:
with the (), it will execute right away and not wait for the document to be ready.
您可以根据需要多次调用 jquery 文档就绪函数。我认为你的问题在于你如何设置你的功能。如果您尝试调用就绪函数,则应如下所示:
此外,如果
something
元素是由 main.js 文件创建的,则应将其包含在 之前 您的特定.js 文件。You can call the jquery document ready function as many times as you need. I think your issue is with how you've set up your function. If you're trying to call the ready function, it should be like this:
Also, if the
something
elements are created by your main.js file, you should include it before your specific.js file.