2010-01-29 106 views
161

我使用jQuery.append()來動態添加一些元素。有沒有什麼辦法來獲得這些新插入的元素的jQuery集合或數組?jQuery append() - 返回附加元素

所以我想這樣做:

$("#myDiv").append(newHtml); 
var newElementsAppended = // answer to the question I'm asking 
newElementsAppended.effects("highlight", {}, 2000); 
+3

[更簡單的方法從附加元素獲取jQuery對象](http://stackoverflow.com/questions/1443233/easier-way-to-get-a-jquery-object-from-appended-element ) – bluish 2013-06-10 13:03:36

回答

225

有做這個簡單的方法:

$(newHtml).appendTo('#myDiv').effects(...); 

這首先與jQuery(html [, ownerDocument ])創建newHtml,然後使用appendTo(target)各地輪流東西(注「To」位)將其添加到#mydiv的末尾。

因爲你現在$(newHtml)開始appendTo('#myDiv')的最終結果是HTML的新位,而.effects(...)通話將上一些HTML太多。

+3

我想我實際上使用'appendTo'和'prependTo'遠遠超過我使用'append'和'prepend'。 – 2010-01-29 01:53:18

+2

使用jQuery UI版本1.9.2我得到'效果'不是一個函數......但'效果'是 – 2013-03-01 08:57:17

+0

工程真棒動態添加元素通過AJAX和附加.data()他們:D – 2014-06-21 17:46:53

24
var newElementsAppended = $(newHtml).appendTo("#myDiv"); 
newElementsAppended.effects("highlight", {}, 2000); 
36
// wrap it in jQuery, now it's a collection 
var $elements = $(someHTML); 

// append to the DOM 
$("#myDiv").append($elements); 

// do stuff, using the initial reference 
$elements.effects("highlight", {}, 2000); 
+2

當我以後嘗試將事件綁定到附加元素時,這並不適用於我。我用var appendTarget = $(newHtml).appendTo(element)。我可以用$(attachedTarget).bind('keydown',someFunc)來綁定 – 2012-06-22 19:12:55

+0

我認爲它是'$ elements.effect(「highlight」,{},2000);',而不是'effects'。 – why 2013-03-27 12:44:03

+2

這不起作用,因爲追加後的$ elements變量發生變化並且不再可用。 – 2014-01-07 20:26:55

8

小提醒,當元件被動態添加,函數等append()appendTo()prepend()prependTo()返回一個jQuery對象,而不是HTML DOM元素。

DEMO

var container=$("div.container").get(0), 
    htmlA="<div class=children>A</div>", 
    htmlB="<div class=children>B</div>"; 

// jQuery object 
alert($(container).append(htmlA)); // outputs "[object Object]" 

// HTML DOM element 
alert($(container).append(htmlB).get(0)); // outputs "[object HTMLDivElement]" 
+15

append()中的返回元素是容器而不是新元素。 – Tomas 2014-09-22 13:45:19

0

我想你可以做這樣的事情:

var $child = $("#parentId").append("<div></div>").children("div:last-child"); 

父#parentId從追加回來,所以加一個jQuery兒童查詢它來獲取最後div插入的孩子。

$ child是添加的jquery包裝的子div。