Answers:
lenght
而不是length
; 这是拼写错误。
.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 }
确实,在未定义或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)我添加了用于这种情况的小插件的代码。
查找函数返回匹配元素的数组。您可以检查长度是否为零。请注意,所做的更改仅查找元素一次,然后根据需要重新使用结果。
var elem = $("#btext" + i);
if (elem.length != 0) {
elem.text("Branch " + i);
}
另外,您是否尝试过仅使用text函数-如果不存在任何元素,它将什么都不做。
$("#btext" + i).text("Branch " + i);
在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.
不管您选择什么,函数$()
都会始终返回一个jQuery对象,因此无法进行测试。最好的方法(如果不是唯一的话)是使用size()
函数或本机长度属性,如上所述。
if ( $('selector').size() ) {...}
使用length属性,您可以执行此操作。
jQuery.fn.exists = function(){return ($(this).length < 0);}
if ($(selector).exists()) {
//do somthing
}