我知道有为此制作的库,例如 require.js,但我不想要任何复杂的东西。我只想运行当主体上有特定类时运行的 JS 代码。
我的尝试是为每个页面代码创建函数,并创建一个函数来检查主体是否具有执行代码的类名,然后运行它。
var body = $('body');
initPageOnClass('.home', initFrontPage());
function initPageOnClass(className, func) {
if (body.hasClass(className)) {
return func;
}
}
function initFrontPage(){
// some code for the frontpage
}
这可行,但我担心这可能是不好的做法。是吗?我知道页面越多,功能就会越多:
initPageOnClass('.home', initAboutPage());
initPageOnClass('.subscriptions', initSubscriptionPage());
initPageOnClass('.team', initTeamPage());
但我不确定这是否是一个很大的拒绝,或者什么。我想正确地做到这一点。
执行此任务的正确或最佳方法是什么?
最佳答案
在这种情况下我宁愿使用一些属性和函数映射。您的标记将定义 role
属性:
<body role=home>...</body>
脚本可能如下所示:
var initMap = {
'home':initAboutPage,
'subscriptions': initSubscriptionPage,
'team': initTeamPage };
// getting initializer function by content of 'role' attribute
var initializer = initMap[ $('body').attr('role') ] || initAboutPage;
initializer();
然后检查我的 spapp - 非常简单(60 LOC)
关于javascript - 在特定页面/主体类上执行 JavaScript 代码的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30903850/