추가 된 요소에서 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가됩니다.

아마도 그게 가장 빠르고 좋은 방법 일 것입니다. 그냥 확인 중입니다.

답변:


161

왜 안 되는가 :

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

?

그런 다음 'el'에 액세스 할 수 있습니다.


2
흠. $container이 경우 여러 요소 가 있으면 어떻게됩니까 ? 제 경우에는 선택기가 일치하는 모든 인스턴스에 무언가를 추가하고 생성 된 요소의 컬렉션을 가져오고 싶습니다.
Rhys van der Waerden

2
이것은 $container jsfiddle.net/onL028ty의 여러 인스턴스에서 작동하지 않습니다 . 사용 appendTo트릭 대신 jsfiddle.net/6nmdh84e
ktutnik

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>'); 어쨌든 좋습니다. 감사.
Mike S
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.