jQuery append () - eklenen öğeleri döndürür


188

Dinamik olarak bazı öğeleri eklemek için jQuery.append () kullanıyorum . Bu yeni eklenen öğelerin jQuery koleksiyonu veya dizisi almanın herhangi bir yolu var mı?

Bunu yapmak istiyorum:

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

Yanıtlar:


263

Bunu yapmanın daha basit bir yolu var:

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

İlk oluşturarak etrafında bu dönüşler şeyler newHtmlile jQuery(html [, ownerDocument ])ve daha sonra kullanarak appendTo(target)( "not Tosonuna öyle eklemek için" bit) #mydiv.

Şimdi Çünkü başlangıç ile $(newHtml)bitiş sonucu appendTo('#myDiv')html o yeni bit ve .effects(...)çağrı o olacak yeni çok html bit.


2
JQuery UI sürümü alıyorum 1.9.2 kullanarak effectsbir işlev değil ... ama effectbir
Philipp M

Ben de başka bir imza olduğunu eklemek istiyorum: appendTo (hedef, bağlam). Herhangi bir jQuery seçici gibi, hedef aramaya izin verir, AMA sadece belirli bir bağlam içinde. Eklentiler veya kitaplıklar yazarsanız çok yararlı olabilir.
Pierpaolo Çıra

1
Bu bir hata atar newHtmlgeçerli HTML veya geçerli jQuery seçici değildir: $('/ This is Not HTML /').appendTo('#myDiv')sonuçlanır Uncaught Error: Syntax error, unrecognized expressionsüre $('#myDiv').append('/ This is Not HTML /')hedef elemana metni ekleyerek düzgün çalışır.
Thomas CG de Vilhena

41
// 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
Sonradan eklenen öğeye bir olay bağlamaya çalıştığımda bu benim için çalışmadı. Ben var appendedTarget = $ (newHtml) .appendTo (element) kullandım. Daha sonra $ (appendedTarget) .bind ('keydown', someFunc) kullanarak bağlayabilirim
Zac Imboden

Bence öyle $elements.effect("highlight", {}, 2000);değil effects.
neden

2
Bu, $ elements değişkeni eklendikten sonra değiştiği, değiştiği ve artık kullanılamadığı için çalışmaz.
Alex V

@AlexV Bu işe yarıyor gibi görünüyor, jsbin.com/xivedohofi/1/edit?html,js,output adresindeki canlı demoya bakın, benzer soru için kabul edilenle aynı cevabı görün stackoverflow.com/questions/1443233/…
Adrien Be

2
Görünüşe göre bunu jQuery'nin yeni sürümlerinde düzeltmişlerdir.
Alex V

30
var newElementsAppended = $(newHtml).appendTo("#myDiv");
newElementsAppended.effects("highlight", {}, 2000);

10

Küçük bir hatırlatma elemanları dinamik eklendiğinde, işlevleri gibi append(), appendTo(), prepend()ya da prependTo()bir jQuery nesnesi değil, HTML DOM elemanı döndürür.

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]"

19
Append () öğesinden döndürülen öğe, yeni öğe değil, kaptır.
Tomas

0

Bence böyle bir şey yapabilirsiniz:

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

#ParentId üst öğesi ekten döndürülür, bu nedenle son div alt öğesini eklemek için bir jquery children sorgusu ekleyin.

$ child sonra eklenen jquery kaydırılan alt div olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.