我有一个包含多个页面的网站,每个网页都附加了某些元素的自定义事件处理程序。每个页面在html标记中都有一个id(#page1,#page2,...)。
在我的网站javascript文件中,我已经为自动执行的模块中的每个网站分离了功能,简化如下:
//module 1 for stuff that happens on #page1
(function() {
// stuff to happen, events, delegations, preparations, etc
})();
我认为只有在当前文档中找到#id时才能执行某些与页面相关的模块:
if( $("#page1").length ) {
// call module 1
};
...因为在某些模块中发生了很多事件委托。
这是加速事情的常用/好方法吗?或者仅将模块包含在需要它们的子网站中的分离js文件中更好?或任何其他方法/想法?
答案 0 :(得分:5)
将所有代码放在一个js文件中,以便缓存它。在主体或类似元素上放置一个id,然后将每个代码模块放在一个单独的函数中。然后有一个对象来保存链接到body元素id的模块引用,然后在onload中:
var modules = {
id1: function() { /* stuff for page 1 */},
id2: function() { /* stuff for page 2 */},
...
}
var id = document.body.id
if (id && id in modules) {
modules[id]();
}
然后你只需给主体一个应该为该页面运行的函数的id。