如何在 jQuery 中检查空对象

2022-08-30 01:56:02

我正在使用jQuery,我想检查我的页面中是否存在元素。我已经写了下面的代码,但它不起作用:

if($("#btext" + i) != null) {
    //alert($("#btext" + i).text());
    $("#btext" + i).text("Branch " + i);
}

如何检查元素是否存在?


答案 1

查看 jQuery FAQ...

您可以使用选择器返回的 jQuery 集合的长度属性:

if ( $('#myDiv').length ){}

答案 2

(由于我似乎没有足够的声誉来投票否决答案...)

沃尔夫 说:

在未定义或空对象上调用 length 属性将导致 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
}

虽然在未定义或空对象上调用 length 属性确实会导致浏览器失败,但 jQuery 的选择器($('...'))的结果永远不会是空的或未定义的。因此,代码建议毫无意义。使用其他答案之一,它们更有意义。


(2012年更新)因为人们看代码,这个答案在列表上的位置相当高:在过去的几年里,我一直在使用这个小插件:

  jQuery.fn['any'] = function() {
     return (this.length > 0);
  };

我认为 $('div').any() 读起来比 $('div').length 更好,而且你不会受到拼写错误的影响:$('div').ayn() 会给出一个运行时错误,$('div').lenght 会默默地总是很可能是虚假的。

__
2012年11月编辑:

1)因为人们倾向于看代码,而不是阅读围绕代码所说的内容,所以我在引用的Wolf代码中添加了两个大的警告。
2)我添加了我用于这种情况的小插件的代码。