2010-04-22 26 views
11

我試圖動態地和圖像鏈接,但是我無法正確確定父鏈接是否已經存在。jQuery - 如何確定父元素是否存在?

這是我應得的

if (element.parent('a'.length) > 0) 
{ 
     element.parent('a').attr('href', link);    
} 
else 
{ 
     element.wrap('<a></a>'); 
     element.parent('a').attr('href', link);  
} 

其中元素指的是我的img元素和鏈接是指URL中使用。

每次代碼運行時,執行else子句,而不管img標籤是否包裝在標籤中。

任何人都可以看到我做錯了什麼?

任何意見讚賞。

謝謝。

回答

32

第一行應是:

if (element.parent('a').length > 0) 
+4

'如果(元件。父母('a')。長度)''沒有'> 0'就足夠了,因爲任何大於0的數字都會默認爲tr UE。 – PhysX 2011-11-08 12:07:04

+18

是的,但是使用'> 0'使得代碼更具可讀性,更明顯,它的可讀性要比簡潔明瞭。 – RoToRa 2011-11-08 12:17:48

+1

@PhysX我們再次見面 – DarkBee 2014-08-06 09:19:56

0

您的代碼被解析爲對element.parent的調用,參數'a'.length
因此相當於element.parent(1),這是一個無效的調用。

需要由)後移動.length得到jQuery對象的長度,這樣的:

if (element.parent('a').length > 0) 

而且,如果element嵌套在其他一些變量,它本身在這是行不通的<a>標籤。
您可能想改爲撥打closest

5

假設element實際上是一個jQuery對象:

if (!element.parent().is("a")) { 
    element.wrap("<a>") 
} 
element.parent().attr("href", link); 

如果element是DOM節點:

if (!$(element).parent().is("a")) { 
    $(element).wrap("<a>") 
} 
$(element).parent().attr("href", link); 
+0

@cletus主宰競技場。 +1 – 2010-04-22 14:57:49

相關問題