2011-12-23 103 views
0

我有一个元素叫做链接,我需要检查。jQuery - 检查元素是否存在 - 哪种方式最好?

目前我在做这个:

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

我很好奇,对我的支票链接

我曾尝试以下:

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

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

哪种方式最好做到这一点?现在我坚持link.length == 1

感谢您的帮助!

UPDATE

链接如下:

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上,我有时会以一个空的对象[]触发函数,我不希望它触发。

因此我对如何检查链接

+0

你是如何设置'link'?你的代码表明它是一个jQuery对象,而不是一个元素。 – Alnitak 2011-12-23 13:43:09

+0

更新了上面的代码 – frequent 2011-12-23 20:14:33

回答

0

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

var link = $('#link'); 

link.length === 1 

与添加=所以有问题是没有类型的强制。如果你使用id选择器,这是完美的选择器只返回一个元素(这当然意味着你的ID在你的页面上是唯一的)。 如果如果至少一个元素的集合中存在,您必须检查(您使用class选择)当然可以用

collection.length > 0 
+0

谢谢!现在,我认为这效果最好。需要尝试更多。 – frequent 2011-12-23 20:20:25

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

Assumuming链接是一个jQuery对象

如果链接的ID的元素,

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

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

if (link.length) 

除非您想确定正好是之间的一个匹配元素,否则不需要进行明确的比较。

.length值要么是零,这为布尔使用时评估为假,或正,评估为真。

+0

谢谢,但我想我正在与尼古拉斯解决方案。 – frequent 2011-12-23 20:20:06

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

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