Cách dễ dàng hơn để lấy một đối tượng jQuery từ phần tử được nối thêm


81

Có cách nào dễ dàng hơn / nhanh hơn để thêm phần tử bằng cách sử dụng jQuery append không:

Cách lấy phần tử $ selectors:

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

Tôi đã thử:

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

nhưng điều đó làm cho $ selectors = $ container

Có lẽ đó là cách nhanh nhất / tốt nhất. Chỉ cần kiểm tra.

Câu trả lời:


161

Tại sao không chỉ:

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

?

Sau đó, bạn có quyền truy cập vào 'el'.


2
Hừm. Điều gì xảy ra nếu $containercó nhiều phần tử trong trường hợp này? Trong trường hợp của tôi, tôi muốn nối một cái gì đó vào tất cả các trường hợp mà một bộ chọn phù hợp và nhận một bộ sưu tập các phần tử đã tạo.
Rhys van der Waerden

2
điều này sẽ không hoạt động trên nhiều phiên bản của $container jsfiddle.net/onL028ty . Sử dụng appendTomẹo thay jsfiddle.net/6nmdh84e
ktutnik

61

Đây là cách làm yêu thích của tôi:

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

3
+1 - của tôi cũng vậy. Làm tất cả những gì bạn cần làm với phần tử mới được tạo trước khi gắn nó vào DOM.
Russ Cam

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

1
Thông tin tốt, cảm ơn. Nó hơi dài dòng đối với tôi so với các câu trả lời khác, nhưng tôi tự hỏi liệu nó có hoạt động tốt hơn không? Hiệu suất không phải là một vấn đề trong tình huống cụ thể của tôi, nhưng có thể đối với những người khác.
slolife 18/09/09

2

Bạn cũng có thể tạo một hàm jQuery mới để làm điều đó:

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

và sau đó sử dụng nó như vậy:

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

tất nhiên nếu bạn muốn thêm nhiều hơn một mục:

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

Ưu điểm của cách tiếp cận như thế này là sau này bạn có thể thêm nhiều hơn vào chức năng "addChild" nếu bạn muốn. Lưu ý rằng đối với cả hai ví dụ trên, bạn cần thêm phần tử vào tài liệu, do đó, một ví dụ đầy đủ có thể là:

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

2
Tôi nghĩ rằng phần cuối cùng của câu trả lời này chỉ làm tăng thêm sự nhầm lẫn; thêm vào tài liệu không phải là một phần của câu hỏi. Bạn có thể giữ cho nó thực sự đơn giản như cletus và để người đọc tưởng tượng $ container là một UL. $ containerner.append ('<li> chào </li>'); Dù sao, tuyệt vời. Cảm ơn.
Mike S
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.