2013-04-10 52 views
6

使用jQuery API append()添加新的元素:jQuery的:如何返回附加元素

$(selector).append('<div class="test"></div>')

我想表達的回報只是附加元素爲我的進一步使用,但它返回$(selector)。那麼,如何讓jQuery返回剛添加的元素以避免重新選擇它?

+5

'$('

').appendTo(selector)'? – 2013-04-10 12:09:12

+1

可能重複的[jQuery append() - 返回附加元素](http://stackoverflow.com/questions/2159368/jquery-append-return-appended-elements) - 什麼發生在第一次搜索? :) – 2013-04-10 12:18:14

回答

6

我相信這樣做的方式是使用appendTo()

那麼你可以做

$('<div class="test"></div>').appendTo(selector).css('background','blue'); 

或任何你想做的事。

這會導致您剛添加的div有藍色背景。

2

您只能存儲對其的引用。請記住,在將$div附加到作爲DOM的一部分的元素之前,應該先執行所有操作,以避免多次重排。

var $div = $('<div class="test"></div>'); 

$(selector).append($div); 
+0

你不需要$ div div之前$ – Bill 2013-04-10 12:10:22

+4

@BillyMathews,這是常見的jQuery對象變量 – smerny 2013-04-10 12:10:56

+2

@BillyMathews這是一個命名約定,廣泛用於識別持有對jQuery對象的引用的變量。 – plalx 2013-04-10 12:11:47

2

您可以從append由HTML字符串傳遞給jQuery function獨立創建的元素:

$('<div class="test"></div>'); 

您可以使用無論是在append

$(selector).append(/* $div = */$('<div class="test"></div>').…); 

appendTo

/* $div = */$('<div class="test"></div>').appendTo(selector).… ; 

或者你只是將它們分成兩個語句。

0

這也可以工作。

<div class="inner">hellworld</div> 
$('.inner').append('<p>paragraph</p>'); 

這將插入兩個新的S和現有的作爲身體的最後三個子節點

var $newdiv1 = $('<div id="object1"/>'), 
newdiv2 = document.createElement('div'), 
existingdiv1 = document.getElementById('foo'); 
$('body').append($newdiv1, [newdiv2, existingdiv1]); 
-1

也許你可以試試要麼

var elt = $('<div class="test"></div>'); 
$(selector).append(elt); 

或者使用appendTo來代替添加,然後鏈接任何你需要的(show()在下面的例子中)

$('<div class="test"></div>').appendTo($(selector)).show() 
+0

仍然不明白爲什麼選擇一個相同的解決方案downvoted ...我們並不都有很好的聯繫,有時它(錯誤地)可以被認爲是重複的因爲發佈時間,但其解釋可以幫助那些需要示例的人... – 2013-04-10 12:30:48

0

請試試這個

$(selector).append('<div class="test"></div>').find('div.test:last-child') 
0

你可以返回它在這個例子中jsfiddle

$(selector).append('<div class="test"></div>').children('.test'); 

添加childern jQuery的功能,或者您可以使用prependTO jQuery的功能在這個例子中jsfiddle

$('<div class="test"></div>').prependTo(selector);