jQuery .ready() 在不存在的元素上触发事件

Alo*_*lon 1 javascript jquery

在我网站的某个页面上,jQuery .ready() 正在触发,尽管它不应该触发

代码:

    var home = ["index", "about"];
    _.each(home, function(page) {
       $("body.home." + page).ready( function() {
           //DO SOMETHING HERE
       });
    });

    <html>
    <body class='test'>
    //ALOT OF CONTENT HERE
    </body>
    </html>
Run Code Online (Sandbox Code Playgroud)

问题是 //DO SOMETHING HERE 会触发两次,即使在初始化 .ready() 事件时,它们是在不存在的元素上初始化的

我缺少什么?

rro*_*and 5

您有一个包含两个元素的数组:

var home = ["index", "about"];
Run Code Online (Sandbox Code Playgroud)

对于这 2 个中的每一个:

_.each(home, function)
Run Code Online (Sandbox Code Playgroud)

您正在运行该函数:

function(page) {
   $("body.home." + page).ready( function() {
       //DO SOMETHING HERE
   });
}
Run Code Online (Sandbox Code Playgroud)

$().ready()是一个侦听器,您每页设置一次。所以它会发射两次。

该$().ready()函数不需要选择器,但建议使用$(document).ready(). 有关更多详细信息,请参阅http://api.jquery.com/ready 。