我想知道jquery的执行情况。假设我有一个不存在的ID,为什么jquery仍然尝试执行该部分代码:
$(function() {
$( "#datepicker_doesnotexist" ).datepicker({
defaultDate: new Date(date_var)
});
});
在这种情况下,它抱怨date_var
未定义。这是可以理解的,我可以进行检查以防止这种情况等。
我想知道为什么jQuery执行这部分代码,如果该ID(datepicker_doesnotexist)不存在。如果它无论如何都无法绑定到元素上,那么这样做效率似乎非常低效。
答案 0 :(得分:3)
您尚未初始化 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,则上面的代码会抛出错误。
答案 1 :(得分:1)
{defaultDate: new Date(date_var)}
只是传递了一些论证,而不是函数本身。
与做:
相同function someFunction(date) {
}
// this will result in an error because it is not defined. Same things happens in your code.
someFuntion(undefinedVariable);
简单地说date_var
尚未定义(例如页面加载),但您正在尝试使用它。
答案 2 :(得分:0)
编辑:它正在发生,因为你正在将一个对象传递给该函数.datepicker(),并且它将对象作为传入对象的一部分进行评估。这就是预期的行为。