jquery - 为什么jquery对不存在的选择器执行代码

标签 jquery jquery-ui datepicker

我想知道 jquery 的执行情况。假设我有一个不存在的ID,为什么jquery仍然尝试执行那部分代码:

$(function() {
        $( "#datepicker_doesnotexist" ).datepicker({
         defaultDate: new Date(date_var)   
        });
    });

在这种情况下,它提示 date_var 未定义。这是可以理解的,我可以进行检查来防止这种情况发生,等等。

我想知道如果该 ID (datepicker_doesnotexist) 不存在,为什么 jQuery 会执行这部分代码。如果无论如何都无法将其绑定(bind)到元素,那么这样做似乎效率非常低。

一个例子: http://jsfiddle.net/CdE3k/

最佳答案

您尚未初始化date_var。这应该会阻止抛出错误

 $(function() {
    var date_var = new Date( 2012, 10, 25 );

    $( "#datepicker_doesnotexist" ).datepicker({
        defaultDate: date_var   
    });
 });

如果没有找到具有匹配 ID 的元素,jQuery 将返回一个没有元素的 jQuery 对象。 返回的 jQuery 对象上的 datepicker 方法仍会被调用,但它只是没有任何可使用的 html 元素。

这实际上是一件好事。如果 jQuery 在没有元素与 ID 匹配时返回 undefined,则上述代码将引发错误。

关于jquery - 为什么jquery对不存在的选择器执行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13075639/

相关文章:

javascript - Dialog 中的事件和 UI 参数是什么

iphone - iOS - 删除以编程方式添加的 subview 并在标签中打印日期

jquery - yii2 kartik select2 插件在模式下不起作用

javascript - jQuery 循环插件(通常)在 Google Chrome 中不起作用

java - 如何动态添加新行到表中的新行中的日期选择器字段?

javascript - 如何从我的日历中禁用过去的日期?

javascript - 自定义脚本上的 Eonasdan/bootstrap-datetimepicker 选项

html - 在页面加载时隐藏可折叠行

javascript - jquery,显示两个不同的列表,并选中复选框上的公共(public) 'rel'

jquery - 居中 DIV 在 IE 中显示在右侧