jQuery - 检查元素是否存在 - 哪种方式最好?

时间:2011-12-23 13:39:19

标签: jquery validation element

我有一个名为link的元素,我需要检查。

目前我正在这样做:

// routine
if ( link.length == 1 && !link.is( ".toggle_popover" ) ) {
    self.panelTrans();
    } 

我对我检查链接

感到好奇

我尝试了以下内容:

if (link) ... 
if (!link)...
if (link.length == 1) ...
if (link.length != 0) ...

问题是 link 也可以是一个空对象= [],在这种情况下我不希望我的例程触发。

哪种方式最好这样做?现在我坚持使用 link.length == 1

感谢您的帮助!

更新

链接如下:

var link = $( self.findClosestLink(event.target) )

findClosestLink: function (ele) {
      var self = this;
      while (ele){
          if (ele.nodeName.toLowerCase() == "a"){
              break;
              }
           ele = ele.parentNode;
           }
      return ele;
      }

它取自jQuery Mobile脚本,并检查用户在屏幕上是否存在父链接元素。我正在使用它来启动我自己的JQM例程,并希望确保我没有触发任何浪费的函数调用。这就是我正在检查链接的原因。在Firebug上,我有时最终会在空对象[]上触发该函数,我不希望它被触发。

因此,我的问题是如何检查链接

4 个答案:

答案 0 :(得分:1)

如果link是jQuery对象,只需使用:

if (link.length)

除非你想确定完全一个匹配的元素,否则不需要进行明确的比较。

.length的值将为零,当用作布尔值时,将评估为false,或者为正,评估为true。

答案 1 :(得分:0)

我认为最好的方法是(我想你说的是一个jQuery对象)

var link = $('#link');

link.length === 1

添加了=,因此没有类型强制。如果你使用id选择器,这是完美的,因为选择器只返回一个元素(这当然意味着你的id在你的页面上是唯一的)。 如果你必须检查一个集合中是否至少存在一个元素(你使用class选择器)当然要使用

collection.length > 0 

答案 2 :(得分:0)

if ( link.length)
{
  // element exist
}

假设链接是一个jquery对象

如果link是元素的id,

 if($("#link").length)
 {
   // element exist
 }

答案 3 :(得分:0)

if($('#link').length){
//its available
}

这是正确的方法。它也在jQuery主页上进行了描述。这是检查元素是否可用的最快方法!

相关问题