jQuery append()-追加された要素を返す


188

私は使っています jQuery.append()をして、いくつかの要素を動的に追加しています。これらの新しく挿入された要素のjQueryコレクションまたは配列を取得する方法はありますか?

だから私はこれをしたいです:

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

回答:


263

これを行う簡単な方法があります。

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

これは、最初にで作成newHtmljQuery(html [, ownerDocument ])、次にappendTo(target)(「To」ビットに注意してください)を使用してそれをの末尾に追加することで状況を逆転させ#mydivます。

あなたは今のでスタート$(newHtml)の最終結果appendTo('#myDiv')のhtmlの新しいビットがある、と.effects(...)コールはその上になり、新たなすぎて、HTMLのビット。


2
私は取得していますjQueryのUIのバージョン1.9.2を使用すると、effects関数ではありません...しかしeffectである
フィリップ・M

また、appendTo(target、context)という別のシグネチャもあると付け加えておきます。jQueryセレクターなどの場合、targetを検索できますが、特定のコンテキスト内でのみ検索できます。プラグインやライブラリを作成する場合に非常に役立ちます。
Pierpaolo Cira 2016

1
newHtmlが有効なHTMLまたは有効なjQueryセレクタでない場合、これはエラーをスローします。$('/ This is Not HTML /').appendTo('#myDiv')結果は、ターゲット要素にテキストを追加することにより、Uncaught Error: Syntax error, unrecognized expressionwhile $('#myDiv').append('/ This is Not HTML /')が適切に機能します。
Thomas CG de Vilhena 2017年

40
// 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)を使用しました。次に、$(appendedTarget).bind( 'keydown'、someFunc)を使用してバインドできます
Zac Imboden

私はそれだと思う$elements.effect("highlight", {}, 2000);、ではありませんeffects
なぜ

2
追加された後の$ elements変数が変更され、使用できなくなるため、これは機能しません。
Alex V

@AlexVこれは上のライブデモを参照してください、仕事に思えるjsbin.com/xivedohofi/1/edit?html,js,output同様の質問のために受け入れと同じ答えを参照してくださいまた、stackoverflow.com/questions/1443233/...
エイドリアンはして

2
彼らはjQueryの新しいバージョンでこれを修正したようです。
Alex V

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

10

少し思い出させる要素が動的に追加され、機能が好きでappend()appendTo()prepend()またはprependTo()jQueryオブジェクトではなく、HTML DOM要素を返します。

デモ

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()から返される要素はコンテナであり、新しい要素ではありません。
トーマス

0

私はあなたがこのようなことをすることができると思います:

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

親#parentIdは追加から返されるため、jquery子クエリを追加して、最後に挿入されたdiv子を取得します。

$ childは、追加されたjqueryでラップされた子divです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.