我正在使用jQuery,并且想要检查页面中是否存在某个元素。我编写了以下代码,但它并没有起作用:
if($("#btext" + i) != null) {
//alert($("#btext" + i).text());
$("#btext" + i).text("Branch " + i);
}
如何检查元素是否存在?
我正在使用jQuery,并且想要检查页面中是否存在某个元素。我编写了以下代码,但它并没有起作用:
if($("#btext" + i) != null) {
//alert($("#btext" + i).text());
$("#btext" + i).text("Branch " + i);
}
如何检查元素是否存在?
(由于我似乎没有足够的声望来反对答案...)
Wolf写道:
Calling length property on undefined or a null object will cause IE and webkit browsers to fail!
Instead try this:
// NOTE!! THE FOLLOWING IS WRONG; DO NOT USE! -- EleotleCram if($("#something") !== null){ // do something }
or
// NOTE!! THE FOLLOWING IS WRONG; DO NOT USE! -- EleotleCram if($("#something") === null){ // don't do something }
虽然在未定义或空对象上调用length属性会导致浏览器失败,但jQuery选择器($('...'))的结果永远不会为null或undefined。因此,代码建议毫无意义。使用其他答案,它们更有意义。
(2012年更新)因为人们查看代码并且这个答案排名很高:在过去的几年中,我一直在使用这个小插件:
jQuery.fn['any'] = function() {
return (this.length > 0);
};
__
2012年11月的编辑:
1)因为人们往往看代码而不是读周围的说明,所以我在 Wolf 的引用代码中添加了两个重要的注意事项。
2)我添加了一个小插件的代码,用于此情况。
查找函数返回一个匹配元素的数组。您可以检查长度是否为零。请注意只查找元素一次并根据需要重复使用结果的更改。
var elem = $("#btext" + i);
if (elem.length != 0) {
elem.text("Branch " + i);
}
此外,您尝试过只使用文本函数吗?如果没有元素存在,它将不执行任何操作。
$("#btext" + i).text("Branch " + i);
jQuery的$()函数总是返回非空值,这意味着匹配选择器条件的元素。如果找不到该元素,它将返回一个空数组。 因此你的代码将类似于:
if ($("#btext" + i).length){
//alert($("#btext" + i).text());
$("#btext" + i).text("Branch " + i);
}
// This is a function similar to the jQuery 1.4 $.isEmptyObject.
function isObjectEmpty(obj) {
for ( var name in obj ) {
return false;
}
return true;
}
使用方法如下:
console.log(isObjectEmpty(the_object)); // Returns true or false.
if (value != undefined){ // do stuff }
$()
函数总是返回一个jQuery对象,因此不能用来测试。目前最好的方法(如果不是唯一的方法)是使用size()
函数或上述解释的本机长度属性。if ( $('selector').size() ) {...}
if ( $('#whatever')[0] ) {...}
所有原生jQuery方法返回的jQuery对象并不是数组,它是一个拥有许多属性的对象;其中之一是“length”属性。您还可以检查size()、get(0)或get()——'get(0)'与访问第一个元素(即$(elem)[0])相同。
$("#selector").get(0)
进行检查,就像这样。get返回dom元素,在此之前您正在处理一个数组,需要检查长度属性。我个人不喜欢使用长度检查来处理空值,因为有些原因会使我感到困惑 :)jQuery.fn.exists = function(){return ($(this).length < 0);}
if ($(selector).exists()) {
//do somthing
}
lenght
而不是length
,这是一个拼写错误。 - Sam.length
。 - Samjquery.min.js:2 Uncaught TypeError: Cannot read property 'length' of null
错误信息。但是我没有在 jquery $ 对象上使用 length。 - Avatar