根据body的ID调用onload函数

发布于 2024-12-22 05:00:44 字数 146 浏览 2 评论 0原文

我想在页面加载时初始化一些元素。在不同的页面上,需要初始化不同的元素,但是,我想将所有元素保留在一个文件中。所以我想根据页面的 ID 将不同的函数附加到 body.onload 上。

谁能告诉我这是否可能?如果是,请解释如何做到这一点。

I would like to initialize a few elements on load of the page. On different pages, different elements need to be initialized, however, I would like keep all if it in a single file. So I would like to attach a different function to the body.onload, based on the ID of the page.

Can anyone please tell me if that is possible? If it is, please explain how it can be done.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

若能看破又如何 2024-12-29 05:00:44
$(document).ready(function() {

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

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

});

对于此类事情,您应该使用 CSS 类而不是 ID。

$(document).ready(function() {

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

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

});

You should rather use CSS classes than IDs for this type of thing.

你げ笑在眉眼 2024-12-29 05:00:44

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

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

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

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

One possible pattern would be something like this:

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

Then, on your individual pages:

$(function() {
    var id = $(body).attr('id');
    Controller[id]();
});
冰葑 2024-12-29 05:00:44

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

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

对于其他服务器端语言,请使用类似的内容。这应该在头部部分得到呼应。这样 body onload 就会让这个变量处于活动状态。

然后,您可以使用它来选择需要基于 pageid 执行的语句集,可以使用 onload 事件处理程序内的 switch_case 或使用 js 对象(如其他中提到的)答案。

If you are using PHP, first make the pageid available to JavaScript

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

For other server-side languages, use something similar. This should be echoed in the head part. So that body onload will have this variable alive.

Then you can use this to select the set of statements that needs to be executed based on pageid either using a switch_case inside onload event handler or using a js object as mentioned in other answers.

强者自强 2024-12-29 05:00:44

您应该创建一个文件,在其中可以放置对象文字,其中的键引用 body 标记中的每个标识符。并根据当前的 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)
  } )

You should create a file in which you could put object literal with keys referring to each identifiers that you have in body tag. And calls them depending of current body id.

For example

    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)
  } )
踏月而来 2024-12-29 05:00:44

尝试使用:

$('body#your-id').each(function() {
  listOfFunctions();
});

Try with:

$('body#your-id').each(function() {
  listOfFunctions();
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文