我正在使用jQuery,我想检查页面中是否存在元素.我写了下面的代码,但它不起作用:
if($("#btext" + i) != null) { //alert($("#btext" + i).text()); $("#btext" + i).text("Branch " + i); }
如何检查元素的存在?
查看jQuery FAQ ...
您可以使用选择器返回的jQuery集合的length属性:
if ( $('#myDiv').length ){}
(因为我似乎没有足够的声誉来拒绝答案......)
沃尔夫写道:
在undefined或null对象上调用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 }
虽然在undefined或null对象上调用length属性确实会导致浏览器失败,但jQuery选择器($('...'))的结果永远不会为null或未定义.因此代码建议毫无意义.使用其他答案之一,他们更有意义.
(2012年更新)因为人们看代码而且这个答案在列表中非常高:在过去的几年里,我一直在使用这个小插件:
jQuery.fn['any'] = function() { return (this.length > 0); };
我认为$('div').any()读取优于$('div').长度,加上你不会受到错别字的影响:$('div').ayn()会给出运行时错误,$('div').lenght将很可能永远是假的.
__
编辑2012年11月:
1)因为人们倾向于查看代码而不是阅读代码周围的内容,所以我在引用的Wolf代码中添加了两个重要的警告.
2)我添加了我用于这种情况的小插件的代码.
lookup函数返回匹配元素的数组.你可以检查长度是否为零.请注意,更改仅查找元素一次,并根据需要重用结果.
var elem = $("#btext" + i); if (elem.length != 0) { elem.text("Branch " + i); }
此外,您是否尝试过使用文本功能 - 如果不存在任何元素,它将不执行任何操作.
$("#btext" + i).text("Branch " + i);
jquery $()函数总是返回非null值 - 意味着元素与你的选择器cretaria匹配.如果未找到该元素,则返回一个空数组.所以你的代码看起来像这样 -
if ($("#btext" + i).length){ //alert($("#btext" + i).text()); $("#btext" + i).text("Branch " + i); }
无论你选择什么,函数$()
总是返回一个jQuery对象,因此无法用于测试.最好的方法(如果不是唯一的话)是使用size()
函数或原生长度属性,如上所述.
if ( $('selector').size() ) {...}
在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.