2008-09-10 6 views
8

나는 이것을 할 수있는 좋은 방법을 생각하지 못했지만 단순해야한다고 생각합니다. div에 추가 할 요소가 있습니다. 그런 다음 다른 요소를 복제하여 해당 중간 div로 밀어 넣으 려합니다. 여기에 내가하기를 바랐던 것이있다.jQuery "after"셀렉터 질문

$("#somediv > ul").after("<div id='xxx'></div>").append($("#someotherdiv").clone()); 

이것은 거의 비슷하지만 꽤있는 것처럼 보인다. 이 문제는 "추가"가 원래 "#somediv> ul"선택기에서 작동하는 것 같습니다. 이런 종류의 의미가 있지만, 내가 원하는 바가 아닙니다. "after"로 추가 한 중간 div를 가장 효율적으로 선택하고 "#someotherdiv"를 넣는 방법은 무엇입니까?

답변

9

다른 길로 가서 insertAfter()을 사용하십시오.

작업을 마친 후에 만 ​​생성 된 DOM 노드를 문서에 추가하십시오.

노드가 표시된 문서에 추가되면 브라우저는 변경 사항 수신을 시작하여보기를 새로 고칩니다. 표시된 문서에 노드를 추가하기 전에 모든 작업을 수행하면 브라우저 성능이 향상됩니다.

0

어떻게 "after"로 추가 한 중간 div를 가장 효율적으로 선택하고 "#someotherdiv"를 넣을 수 있습니까?

@ Vincent의 해결책은 아마 같은 결과를 얻는 가장 빠른 방법 일 것입니다. 어떤 이유로 당신이 after()와 사업부를 추가해야하는 경우 다음

.nextAll([expr])

Find all sibling elements after the current element.
Use an optional expression to filter the matched set.

그래서 JS를 사용할 수를 선택하고 그것을 운영 할 필요가된다 :

$("#somediv > ul") 
    .after("<div id='xxx'></div>") 
    .nextAll('#xxx') 
    .append($("#someotherdiv").clone()); 
5

use insertAfter() :

$("<div id='xxx'></div>").insertAfter("#somediv > ul").append($("#someotherdiv").clone())