如何在 jQuery 中检查 null 对象

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

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

如何检查元素的存在?

430393 次浏览

Lookup 函数返回匹配元素的数组。你可以检查长度是否为零。注意这个更改,它只查找元素一次,并根据需要重用结果。

var elem = $("#btext" + i);
if (elem.length != 0) {
elem.text("Branch " + i);
}

另外,您是否尝试过仅使用 text 函数——如果不存在元素,它将什么也不做。

$("#btext" + i).text("Branch " + i);

检查 JQuery 常见问题解答..。

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

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

Jquery $()函数总是返回与您的选择器 cretaria 匹配的非空值均值元素。如果没有找到元素,它将返回一个空数组。 所以你的代码看起来像这样-

if ($("#btext" + i).length){
//alert($("#btext" + i).text());
$("#btext" + i).text("Branch " + i);
}
if ( $('#whatever')[0] ) {...}

所有原生 jQuery 方法返回的 jQuery 对象不是一个数组,而是一个具有许多属性的对象; 其中一个属性是“ length”属性。您还可以检查 size ()或 get (0)或 get ()-‘ get (0)’的工作原理与访问第一个元素(即 $(elem)[0])相同

if (typeof($("#btext" + i)) == 'object'){
$("#btext" + i).text("Branch " + i);
}

无论你选择什么,函数 $()总是返回一个 jQuery 对象,这样就不能用来测试。最好的方法(如果不是唯一的方法)是使用 size()函数或本机长度属性,如上所述。

if ( $('selector').size() ) {...}

在未定义或空对象上调用 length 属性将导致 IE 和 webkit 浏览器失败!

试试这个:

if($("#something") !== null){
// do something
}

或者

if($("#something") === null){
// don't do something
}

(因为我似乎没有足够的名声来投票否决这个答案... ...)

沃尔夫写道:

调用未定义的长度属性 或空对象将导致 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 或未定义。因此,代码建议毫无意义。用其他的答案,会更有意义。


(2012年更新)因为人们在看代码的时候,这个问题的答案排名很靠前: 在过去的几年里,我一直在使用这个小插件:

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

我认为 $(‘ div’) any ()$(‘ div’)长度读起来更好,而且你不会因为输入错误而受到太多的影响: $(‘ div’) . ayn ()会给出一个运行时错误,$(‘ div’)长度很可能总是假的。

好吧
2012年11月编辑:

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

像这样使用 $("#selector").get(0)检查 null。Get 返回 dom 元素,然后处理一个数组,其中需要检查 length 属性。我个人不喜欢空处理的长度检查,它让我感到困惑:)

在 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.

可以使用 length 属性执行此操作。

jQuery.fn.exists = function(){return ($(this).length < 0);}
if ($(selector).exists()) {
//do somthing
}

当对象为空时返回这个错误:

Uncaught TypeError: Cannot read property '0' of null

我试试这个代码:

try{
if ($("#btext" + i).length) {};
}catch(err){
if ($("#btext" + i).length) {
//working this code if the item, not NULL
}
}

用“未定义”怎么样?

if (value != undefined){ // do stuff }