即使文档中不存在ID,也会调用函数

时间:2013-05-18 21:24:46

标签: javascript jquery asp.net-mvc-3

我有以下javascript:

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

每次mySelector出现在文档的某个位置时,我都希望弹出窗口。

我现在面临的问题是,即使文档中不存在选择器,此代码也会正在运行(我会弹出)。

为什么会这样?

3 个答案:

答案 0 :(得分:5)

DOM 准备就绪时执行

ready函数,即使你没有向jQuery传递任何参数,实际上也会触发ready事件,即{{1它忽略了选择器。您可以使用$().ready()属性:

length

答案 1 :(得分:3)

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

答案 2 :(得分:1)

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


通常使用jQuery方法,您无需测试是否存在。他们通常会安静地失败。

 // Does nothing with no matches
$("#mySelector").each(function() {
    alert("foobar!");
});