当前位置:  开发笔记 > 编程语言 > 正文

如何在jQuery中检查null对象

如何解决《如何在jQuery中检查null对象》经验,为你挑选了6个好方法。

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

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

如何检查元素的存在?



1> Christoph..:

查看jQuery FAQ ...

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

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


@AurelianoBuendia,你用`lenght`而不是`length`; 这是一个拼写错误.
@numediaweb,eleotlecram没有说要避免`.length`.

2> eleotlecram..:

(因为我似乎没有足够的声誉来拒绝答案......)

沃尔夫写道:

在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)我添加了我用于这种情况的小插件的代码.


@VovaPopov:我建议你下次花一点时间阅读答案.我只是说"狼"的代码示例不正确.我从未提供过答案,只是提到了一些更有意义的答案.

3> tvanfosson..:

lookup函数返回匹配元素的数组.你可以检查长度是否为零.请注意,更改仅查找元素一次,并根据需要重用结果.

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

此外,您是否尝试过使用文本功能 - 如果不存在任何元素,它将不执行任何操作.

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


0是假值,因此elem.length表达式的计算结果为false - 换句话说,不需要'!= 0'部分
@ 999,我认为对零的检查使代码更具可读性,尽管这两种方式对于习惯于脚本语言的人来说都是可读的.

4> waney..:

jquery $()函数总是返回非null值 - 意味着元素与你的选择器cretaria匹配.如果未找到该元素,则返回一个空数组.所以你的代码看起来像这样 -

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



5> 小智..:

无论你选择什么,函数$()总是返回一个jQuery对象,因此无法用于测试.最好的方法(如果不是唯一的话)是使用size()函数或原生长度属性,如上所述.

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



6> theamoeba..:

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

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有