根据主体ID调用函数onload

问题描述 投票:0回答:5

我想在页面加载时初始化一些元素。在不同的页面上,需要初始化不同的元素,但是,我希望将所有元素都保存在一个文件中。因此,我想根据页面的ID将不同的功能附加到body.onload

有人可以告诉我这是否可行吗?如果是,请说明如何完成。

jquery onload jquery-events
5个回答
3
投票
$(document).ready(function() {

    var bodyId = $('body').attr('id');

    if (bodyId == 'id1')
        myFunction1();
    elseif (bodyId == 'id2')
        myFunction2();

});

对于这种类型的事情,您应该使用CSS类而不是ID。


1
投票

一种可能的模式是这样的:

var Controller = {
    homePage: function() { alert('home'); },
    contactPage = function() { alert('contact'); }
};

然后,在您的各个页面上:

$(function() {
    var id = $(body).attr('id');
    Controller[id]();
});

1
投票

如果使用的是PHP,请首先使pageid可用于JavaScript

<?php echo "<script>var pageid={$mypageid};</script>"; ?>

对于其他服务器端语言,请使用类似的内容。这应该在头部回显。因此,该body onload将保留此变量。

然后,您可以使用onload事件处理程序内部的switch_case或其他答案中提到的js object,根据pageid选择需要执行的语句集。


1
投票

您应该创建一个文件,您可以在其中放置带有指向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)
  } )

0
投票

尝试使用:

$('body#your-id').each(function() {
  listOfFunctions();
});
© www.soinside.com 2019 - 2024. All rights reserved.