检测jquery选择器是否返回空对象的最佳方法是什么? 如果你有:
alert($('#notAnElement'));
你得到[object object],所以我现在做的方式是:
alert($('#notAnElement').get(0));
它会写"undefined"你可以检查一下。但这似乎很糟糕。还有别的办法吗?
检测jquery选择器是否返回空对象的最佳方法是什么? 如果你有:
alert($('#notAnElement'));
你得到[object object],所以我现在做的方式是:
alert($('#notAnElement').get(0));
它会写"undefined"你可以检查一下。但这似乎很糟糕。还有别的办法吗?
当前回答
我最喜欢的是用这个小小的便利来扩展jQuery:
$.fn.exists = function () {
return this.length !== 0;
}
使用:
$("#notAnElement").exists();
比使用长度更明确。
其他回答
选择器返回一个jQuery对象数组。如果没有找到匹配的元素,则返回一个空数组。您可以检查选择器返回的集合的.length,或者检查第一个数组元素是否'undefined'。
您可以在IF语句中使用以下任何示例,它们都产生相同的结果。如果选择器找到匹配的元素,则为True,否则为false。
$('#notAnElement').length > 0
$('#notAnElement').get(0) !== undefined
$('#notAnElement')[0] !== undefined
if ( $("#anid").length ) {
alert("element(s) found")
}
else {
alert("nothing found")
}
我喜欢这样做:
$.fn.exists = function(){
return this.length > 0 ? this : false;
}
然后你可以这样做:
var firstExistingElement =
$('#iDontExist').exists() || //<-returns false;
$('#iExist').exists() || //<-gets assigned to the variable
$('#iExistAsWell').exists(); //<-never runs
firstExistingElement.doSomething(); //<-executes on #iExist
http://jsfiddle.net/vhbSG/
我最喜欢的是用这个小小的便利来扩展jQuery:
$.fn.exists = function () {
return this.length !== 0;
}
使用:
$("#notAnElement").exists();
比使用长度更明确。
这是在JQuery文档中:
http://learn.jquery.com/using-jquery-core/faq/how-do-i-test-whether-an-element-exists/
alert( $( "#notAnElement" ).length ? 'Not null' : 'Null' );