我正在使用jQuery,我想检查页面中是否存在元素。我写了以下代码,但它不起作用:
if($("#btext" + i) != null) {
//alert($("#btext" + i).text());
$("#btext" + i).text("Branch " + i);
}
如何检查元素是否存在?
答案 0 :(得分:245)
答案 1 :(得分:59)
(因为我似乎没有足够的声誉来拒绝答案......)
狼写道:
在undefined上调用length属性 或者一个null对象将导致IE和 webkit浏览器失败!
而是试试这个:
// NOTE!! THE FOLLOWING IS WRONG; DO NOT USE! -- EleotleCram if($("#something") !== null){ // do something }
或
// NOTE!! THE FOLLOWING IS WRONG; DO NOT USE! -- EleotleCram if($("#something") === null){ // don't do something }
虽然在undefined或null对象上调用length属性确实会导致浏览器失败,但jQuery选择器($('...'))的结果将永远不会 null或undefined。因此代码建议毫无意义。使用其中一个答案,它们更有意义。
(2012年更新)因为人们看代码并且这个答案在列表中非常高:在过去的几年里,我一直在使用这个小插件:
jQuery.fn['any'] = function() {
return (this.length > 0);
};
我认为 $('div')。any()读取优于 $('div')。length ,加上你不会受到太大影响拼写错误: $('div')。ayn()会产生运行时错误, $('div')。lenght 将很可能一直是假的。
__
编辑2012年11月:
1)因为人们倾向于查看代码并且没有阅读代码周围的内容,所以我在引用的Wolf代码中添加了两个重要的警告。 2)我添加了我用于这种情况的小插件的代码。
答案 2 :(得分:13)
lookup函数返回匹配元素的数组。你可以检查长度是否为零。请注意,更改只需查找一次元素,并根据需要重复使用结果。
var elem = $("#btext" + i);
if (elem.length != 0) {
elem.text("Branch " + i);
}
另外,您是否尝试过使用文本功能 - 如果不存在任何元素,它将无效。
$("#btext" + i).text("Branch " + i);
答案 3 :(得分:12)
jquery $()函数总是返回非空值 - 与您选择器cretaria匹配的均值元素。如果未找到该元素,则返回一个空数组。 所以你的代码看起来像这样 -
if ($("#btext" + i).length){
//alert($("#btext" + i).text());
$("#btext" + i).text("Branch " + i);
}
答案 4 :(得分:5)
无论您选择什么,函数$()
总是返回一个jQuery对象,因此无法用于测试。最好的方法(如果不是唯一的话)是使用size()
函数或原生长度属性,如上所述。
if ( $('selector').size() ) {...}
答案 5 :(得分:5)
在jQuery 1.4中你得到了$ .isEmptyObject函数,但是如果你被迫使用像我们这样的旧版本的jQ,那么糟糕的Drupal开发人员就会窃取使用这段代码:
// 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.
答案 6 :(得分:3)
if ( $('#whatever')[0] ) {...}
所有本机jQuery方法返回的jQuery对象不是数组,它是一个具有许多属性的对象;其中一个是“长度”财产。您还可以检查size()或get(0)或get() - 'get(0)'与访问第一个元素的工作方式相同,即$(elem)[0]
答案 7 :(得分:3)
如何使用" undefined"?
if (value != undefined){ // do stuff }
答案 8 :(得分:1)
使用$("#selector").get(0)
来检查null。 get返回dom元素,直到那时你要处理一个数组,你需要检查length属性。我个人不喜欢长度检查空处理,它因某些原因让我感到困惑:)
答案 9 :(得分:1)
使用length属性可以做到这一点。
jQuery.fn.exists = function(){return ($(this).length < 0);}
if ($(selector).exists()) {
//do somthing
}
答案 10 :(得分:0)
当对象为空时返回此错误:
未捕获TypeError:无法读取属性&#39; 0&#39; null
我试试这个代码
try{
if ($("#btext" + i).length) {};
}
catch(err){
if ($("#btext" + i).length) {
//working this code if item not NULL
};
}
答案 11 :(得分:-4)
if (typeof($("#btext" + i)) == 'object'){
$("#btext" + i).text("Branch " + i);
}
答案 12 :(得分:-7)
在undefined或null对象上调用length属性将导致IE和webkit浏览器失败!
而是试试这个:
if($("#something") !== null){
// do something
}
或
if($("#something") === null){
// don't do something
}