2011-03-18 5 views
2

jquery 코드가 작동하지 않는 이유가 확실하지 않습니다. 내 회사에서 사용할 Wordpress 테마를 만들고있어 .insertAfter() 함수가 올바르게 작동하지 않는 것 같습니다. 단지 페이지의 모든 내용을 삭제합니다.JQuery .insertAfter가이 예제에서 작동하지 않습니다 - 이유가 무엇입니까?

<div class='entry'> 
<ul> 
<li>item 1</li> 
<li>item 2</li> 
<li>item 3</li> 
</ul> 
<ul> 
<li>item 1</li> 
<li>item 2</li> 
<li>item 3</li> 
</ul> 
</div> 

JQuery와 섹션 :

$('.entry:first-child').insertAfter($('.entry:last-child')); 

어떤 아이디어?

답변

1

귀하의 .entry:first-childdiv을 선택하고 있습니다. 처음에는 ul을 선택해야한다고 생각합니다. 그래서 현재 자체적으로 요소를 삽입하려고 시도하고 있습니다. 작동하지 않습니다.

console.log($('.entry:first-child')[0] == $('.entry:last-child')[0]); // true 

이 시도

...

$('.entry ul:first-child').insertAfter('.entry ul:last-child'); 

jsFiddle.

선택기 문자열을 insertAfter으로 전달하면 $()으로 다시 묶을 필요가 없습니다.

+0

와우 덕분에 많은 Alex. 나는 오랫동안 이것을 가지고 놀고 있었고 솔직히 나는 당신의 해결책을 시도했다고 생각했습니다. 그러나, 나는 알지 못했다. 매력처럼 작동합니다. 고마워요. – Ryan

1

이 작동합니다 : 알렉스 지적

$('.entry ul:first-child').insertAfter($('.entry ul:last-child')); 

http://jsbin.com/ihihi4/5

, 당신은 .insertAfter 호출 대신 JQuery와 객체에서 다른 선택기를 사용했을 수 있습니다.

JQuery와 사용 설명서는이 설명에 좋은 곳입니다 : 참고로

http://api.jquery.com/insertAfter/

이 insertafter 속성 사이 후 미묘한 차이입니다.

http://api.jquery.com/after

동일에 insertbefore/전 appendTo 및 추가로 적용된다. 차이를 이해하는 것이 유용합니다.

0

"클래스 '항목'으로 요소를 찾은 다음 첫 번째 자식을 선택하지 않으므로 혼란 스럽습니다." jQuery 문서에 따르면 "[First-child]는 부모의 첫 번째 자식 인 모든 요소를 ​​선택합니다." 이 경우 div.entry입니다.