从附加元素中获取jQuery对象的更简单方法


81

有没有一种更简单/更快捷的方法来获取使用jQuery append添加的元素:

如何获取$ selectors元素:

$container.append('<div class="selectors"></div>');
var $selectors = $('.selectors', $container);

我试过了:

var $selectors = $container.append('<div class="selectors"></div>');

但这会使$ selectors = $ container

也许这是最快/最好的方法。只是检查。

Answers:


161

为什么不只是:

var el = $('<div class="selectors"></div>');
$container.append(el);

然后,您可以访问“ el”。


2
嗯 如果$container在这种情况下有多个元素怎么办?在我的情况下,我想向选择器匹配的所有实例添加一些内容,并获取创建的元素的集合。
Rhys van der Waerden 2014年

2
这不适用于$container jsfiddle.net/onL028ty的多个实例。使用appendTo技巧代替jsfiddle.net/6nmdh84e
ktutnik 2015年

61

这是我最喜欢的方法:

var $selectors = $('<div class="selectors"></div>').appendTo(container);

3
+1-我的也是。在将新创建的元素附加到DOM之前,请做所有您需要做的事情。
Russ Cam

5
$selectors = $('<div/>').addClass('selectors').appendTo($container);

1
好信息,谢谢。与其他答案相比,这对我来说有点冗长,但是我想知道它在性能上是否更好?在我的特定情况下,性能不是问题,但对其他人而言可能如此。
slolife

2

您还可以创建一个新的jQuery函数来做到这一点:

jQuery.fn.addChild = function(html) 
{                               
    var target  = $(this[0])                            
    var child = $(html);                                                      
    child.appendTo(target);                                                   
    return child;                                                             
};  

然后像这样使用它:

$('<ul>').addChild('<li>hi</li>');

当然,如果您想添加多个项目:

var list = $('<ul>');
list.addChild('<li>item 1</li>');
list.addChild('<li>item 2</li>');

这样的方法的优势在于,以后您可以根据需要向“ addChild”功能添加更多功能。请注意,对于以上两个示例,您都需要将元素添加到文档中,因此完整的示例可能是:

$('body').addChild('<ul>').addChild('<li>hi</li>');

2
我认为这个答案的最后一部分只会增加混乱。附加到文档不是问题的一部分。您可以使其像cletus一样简单,让读者想象$ container是UL。$ container.append('<li> hi </ li>'); 无论如何,太好了。谢谢。
迈克S
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.