2013-08-27 50 views
1

問題: jQuery將<li> -element插入到兩個div,但只應將其插入第一個列表。將jQuery插入到多個div

HTML結構

<div id="participantsList1"> 
    <div class="inputList"></div> 
</div> 

<div id="participantsList2"> 
    <div class="inputList"></div> 
</div> 

的jQuery:

this._itemList = $("#participantsList1"); 
$('<li class="badge">' + WCF.String.escapeHTML(data.label) + ' <span class="icon icon-remove pointer"></span></li>').insertBefore(".inputList", this._itemList); 

編輯:participantsList1不是一個靜態值..

回答

1

可以使用:eq通過索引來訪問元素採集。 eq是基於零的索引來訪問您需要傳遞零的第一個元素:eq。

this._itemList = $("#participantsList1:eq(0)"); 
+0

或作爲替代...'.first()' –

+0

this._itemList是可變的。 – Chris

+0

什麼是不可改變的? '.inputList'? '('。inputList:eq(0)')'' - 這裏有很多選項... –

0

你可以只更具體:

[...].insertBefore("#participantsList1 .inputList", this._itemList); 
+0

this._itemList是可更改的。我不能這樣做。 – Chris

+0

你總是可以抓住那一點: foo = $(「#participantsList1 .inputList」); bar = $(「#participantsList1 .inputList:n-child(1)」); //或任何你想要的 .insertBefore(foo,bar); –

0

那是因爲你$('<li class="badge">'任何li元素與class = badge

您可以使用parent > child選擇:http://api.jquery.com/child-selector/

.insertBefore("#participantsList1 > inputList").

完整的示例:

$('<li class="badge">' + WCF.String.escapeHTML(data.label) + ' <span class="icon icon-remove pointer"></span></li>').insertBefore("#participantsList1 > .inputList", this._itemList); 
+0

請參閱編輯。 this._itemList是可以改變的。 – Chris

0

我只是解決了自己的問題:

$('<li class="badge">' + WCF.String.escapeHTML(data.label) + ' <span class="icon icon-remove pointer"></span></li>').insertBefore($(".inputList", this._itemList)); 

我必須通過一個jQuery的反對insertBefore()(缺少$(...)