2010-08-29 27 views
0

有沒有一種很好的方式來.appendTo要麼一個元素,要麼取決於它是否存在於DOM?jQuery:appendTo要麼

因此,例如,我非常希望做

理想方法1:

.appendTo($('#div1') || $('#div2')); 

不太好方法2:

var div1 = $('#div1'), 
    div2 = $('#div2'), 
    e = div1; 

if (!div1.length) e = div2; 

.appendTo(e); 

當然我可以」 t做第一個選項,因爲$()總是返回一個對象,所以它的計算結果爲真alert($ || 'a');將始終返回jQuery對象。

回答

4

如果他們爲了以防使用.first(),像這樣:

.appendTo($("#div1, #div2").first()); 

無論爲了他們出現在DOM,只需使用.first().last()從你想要的方向選擇。此外.appendTo()只是被周圍交換,它最好能夠做到這一點:

$("#div1, #div2").first().append(element); 
+0

謝謝,這是一個很好的做法! '.eq()'會以同樣的方式工作嗎? – 2010-08-29 13:01:58

+0

@Gary - Yup,它們只是便利功能,'.first()'是'.eq(0)','.last()'只是'.eq(-1)'幕後。 – 2010-08-29 13:30:04

0

爲什麼不設置一個類上的div。這樣,如果其中一個div存在,它將始終工作。

+0

在某些情況下,兩個div都可以出現,所以我不希望它追加兩次 – 2010-08-29 12:47:06

1

如何

($("#div1").get(0) || $("#div2").get(0)).appendTo(..) 

假設其中至少有一個存在。

+0

這也不錯,不知道'.get'感謝這:) – 2010-08-29 13:00:10