2011-12-23 107 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主頁上描述。這是檢查元素是否可用的最快方法!