2008-09-10 40 views
8

我似乎無法找出一個好辦法做到這一點,但它似乎應該很簡單。我有一個要添加div的元素。然後我想要克隆另一個元素,並將其推入該中間格。這是我希望做的事:jQuery「後」選擇器的問題

$("#somediv > ul").after("<div id='xxx'></div>").append($("#someotherdiv").clone()); 

這似乎是接近,但並不完全在那裏。問題在於「append」似乎在原始的「#somediv> ul」選擇器上運行。這種說法很有道理,但這不是我想要的。我怎樣才能最有效地選擇我添加了「後」,並把我的「#sotherotherdiv」加入它的中間股利?

回答

9

轉過來用insertAfter()

$("<div id='xxx'></div>") 
    .append($("#someotherdiv").clone()) 
    .insertAfter("#somediv > ul") 

嘗試在完成工作後纔將生成的DOM節點添加到文檔中。

將節點添加到顯示的文檔後,瀏覽器開始監聽刷新視圖的任何更改。在將節點添加到顯示的文檔之前完成所有工作確實可以提高瀏覽器的性能。

0

我怎樣才能最有效地選擇我添加了「後」,並把我的「#sotherotherdiv」的中間股利?

@文森特的解決方案可能是獲得相同結果的最快方法。但是,如果出於某種原因,你需要與after()添加格,然後根據需要選擇它,對它進行操作,您可以使用

.nextAll([expr])

Find all sibling elements after the current element.
Use an optional expression to filter the matched set.

所以,你的JS變爲:

$("#somediv > ul") 
    .after("<div id='xxx'></div>") 
    .nextAll('#xxx') 
    .append($("#someotherdiv").clone()); 
5

use insertAfter():

$("<div id='xxx'></div>").insertAfter("#somediv > ul").append($("#someotherdiv").clone())