我想在页面加载时初始化一些元素。在不同的页面上,需要初始化不同的元素,但是,我希望将所有元素都保存在一个文件中。因此,我想根据页面的ID将不同的功能附加到body.onload
。
有人可以告诉我这是否可行吗?如果是,请说明如何完成。
$(document).ready(function() {
var bodyId = $('body').attr('id');
if (bodyId == 'id1')
myFunction1();
elseif (bodyId == 'id2')
myFunction2();
});
对于这种类型的事情,您应该使用CSS类而不是ID。
一种可能的模式是这样的:
var Controller = {
homePage: function() { alert('home'); },
contactPage = function() { alert('contact'); }
};
然后,在您的各个页面上:
$(function() {
var id = $(body).attr('id');
Controller[id]();
});
如果使用的是PHP,请首先使pageid可用于JavaScript
<?php echo "<script>var pageid={$mypageid};</script>"; ?>
对于其他服务器端语言,请使用类似的内容。这应该在头部回显。因此,该body onload将保留此变量。
然后,您可以使用onload事件处理程序内部的switch_case
或其他答案中提到的js object
,根据pageid选择需要执行的语句集。
您应该创建一个文件,您可以在其中放置带有指向body标记中每个标识符的键的对象文字。并根据当前的身体ID对其进行调用。
例如
var callbacks= {
"id_of_body1": function(){
// will trigger when body tag will id_of_body1
},
"id_of_body2": function(){
// will trigger when body tag will id_of_body2
}
}
// or $(document).ready - if you would call function after document is loaded
// or $(fn) what is shortcut for $(document).ready(fn)
$('body').bind('load', function(){
callbacks[$(this).attr('id')].apply(this,arguments)
} )
尝试使用:
$('body#your-id').each(function() {
listOfFunctions();
});