jQuery append() - 返回附加的元素

psy*_*tik 185 jquery

我正在使用jQuery.append()动态添加一些元素.有没有办法获得这些新插入元素的jQuery集合或数组?

所以我想这样做:

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

SLa*_*aks 258

有一种更简单的方法可以做到这一点:

$(newHtml).appendTo('#myDiv').effects(...);
Run Code Online (Sandbox Code Playgroud)

这通过先创建newHtmlwith jQuery(html [, ownerDocument ]),然后使用appendTo(target)(注意" To"位)将其添加到结尾来解决问题#mydiv.

因为你现在开始使用$(newHtml)的最终结果appendTo('#myDiv')是HTML的新位,而.effects(...)通话将是对新的HTML有点太.

  • 我认为我实际上使用`appendTo`和`prependTo`远远超过我使用`append`和`prepend`. (4认同)
  • 使用jQuery UI版本1.9.2我得到`效果`不是一个函数...但是`效果`是 (2认同)

kar*_*m79 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);
Run Code Online (Sandbox Code Playgroud)

  • 当我后来尝试将事件绑定到附加元素时,这对我不起作用.我使用了var attachedTarget = $(newHtml).appendTo(element).然后我可以使用$(attachedTarget)绑定.bind('keydown',someFunc) (2认同)
  • 这不起作用,因为$ elements变量在追加,更改后不再可用. (2认同)
  • 看起来他们已经在更新版本的jQuery中解决了这个问题. (2认同)

Thi*_*lem 30

var newElementsAppended = $(newHtml).appendTo("#myDiv");
newElementsAppended.effects("highlight", {}, 2000);
Run Code Online (Sandbox Code Playgroud)


Age*_*nce 10

一个小的提醒,当元件被动态添加,功能,如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]"
Run Code Online (Sandbox Code Playgroud)

  • append()返回的元素是容器,而不是新元素. (18认同)