2

我有以下 javascript:

 $(document).ready(function () {
    ...
    $("#mySelector").ready(function () {
        window.alert('What the hell!!!');
    });
 });

我希望每次弹出窗口都会出现mySelector我希望每次出现在文档中的某处时

我现在面临的问题是即使文档中不存在选择器,此代码仍在运行(我得到一个弹出窗口)。

为什么会这样?

4

3 回答 3

5

ready函数在DOM准备好时执行,实际上ready即使您没有向 jQuery 传递任何参数,事件也会被触发,即$().ready()它忽略选择器。您可以使用length属性:

$(document).ready(function () {
    if ( $("#mySelector").length ) {
       // ...
    }
});
于 2013-05-18T21:26:05.983 回答
3

$.ready所有jQuery 对象的方法,无论它们是否包含任何元素。这是 source的相关部分。

于 2013-05-18T21:28:38.257 回答
1

这不是ready(). 该.ready()方法会在 DOM 准备就绪时触发其处理程序,或者如果它已经加载,它显然会加载。它基本上忽略了选择器。


通常使用 jQuery 方法,您不需要测试是否存在。他们通常会悄悄地失败。

 // Does nothing with no matches
$("#mySelector").each(function() {
    alert("foobar!");
});
于 2013-05-18T21:27:05.797 回答