基本上,我想做这样的事情:
$(document).ready(function() {
if ($(body).attr("class") === "HomePage") {
HomePage.init(); //bind events for home page (Crockford's module pattern)
} else if ($(body).attr("class") === "AboutPage") {
AboutPage.init(); //bind events for about page
}
});
这样做的原因是,我可以将所有内容缩小到一个js文件中,从而减少http请求的数量。这个解决方案绝对不优雅,因为每当我添加新页面时,我都需要添加另一个'else if‘语句。我可以使用:
$(document).ready(function() {
eval($(body).attr("class") + ".init();");
});
但是eval是邪恶的,我不知道使用这种方法会带来什么性能影响。
发布于 2010-02-19 23:39:32
为什么不使用另一种方法来调用eval
对象[]
而不是使用javascript
假设所有对象在作用域中都是全局的,为什么不尝试:
$(document).ready(function() {
window[$(body).attr("class")].init();
});
发布于 2010-02-19 23:32:40
下面是我在一些项目中使用的模式:
var views = {
'home': function() {
// do stuff on homePage
},
'about': function() {
// some about action
}
}
var c = document.body.className.split(" ");
for (var i=0; c[i]; i++) {
if (c[i] in views) {
views[c[i]].call(this);
}
}
<body class="home"> <!-- home method will be called -->
<body class="home about"> <!-- home and about methods will be called -->
发布于 2010-02-19 23:35:59
为什么不把主页的代码放在主页文件中,把about页面的代码放在about页面文件中呢?换句话说,为什么你想把所有的javascript代码放在同一个文件中呢?我看不出有任何理由这样做。
https://stackoverflow.com/questions/2300302
复制相似问题