2013-01-18 2 views
1

아마도이 작업을 수행 할 수 없지만 뭔가 누락 된 경우를 대비하여 :jQuery id selector를 수정할 수 있습니까?

일시적으로 jQuery id selector ("#")를 수정하여 말하기 ... DocumentFragment, 또는 기본 비헤이비어 대신 DOM에서 요소가 제거 되었습니까?

이유는 무거운 리프트 DOM 조작을 수행하기 위해 무거운 ID 선택기를 사용하는 일부 레거시 코드를 최적화하려고하는 이유입니다. 그러나 모든 id는 단일 요소 아래에 있습니다. 그 요소가 dom에서 제거되고 조작 된 다음 다시 삽입하면 성능이 훨씬 좋아질 것이라고 읽었습니다. "#"셀렉터로 인해 수행 할 수없는 작업 ...

(Sidenote : 조작하기 전에 표시를 설정하여 성능이 현저하게 향상되었지만 여전히 느림).

+0

아니 ... 요소 만 문서의 선물을 getElementById에 의해 발견 될 수있다. 당신은 항상 다른 트래 버설 방법을 사용할 수 있습니다. –

+1

선택기는 DOM에서만 선택할 수 있습니다. 당신이하고 싶은 것은 그 조각들을 자바 스크립트 변수로 저장하는 것입니다. – Blazemonger

+0

단일 조상 요소를 컨텍스트로 전달하여 선택 자의 검색을 제한 할 수 있습니다. – jbabey

답변

1

선택기는 DOM에서만 선택할 수 있습니다. 당신이하고 싶은 것은 그 조각들을 자바 스크립트 변수로 저장하는 것입니다.

$p = $('p').remove(); 
// ... 
$('body').append(someFunction($p)); 

http://jsfiddle.net/mblase75/tjVUM/

1
당신이 할 수있는

당신은 변수에 제거 된 요소에 대한 참조 저장하는 경우 :

// Get a div by id 
var div = $('#thediv'); 
// Remove it from the DOM 
div.remove(); 
// Change the color of the text inside it to red 
// Notice we're selecting with the div as the context 
$('p', div).css('color', 'red'); 
// Re-add div to DOM; text will be red 
document.body.appendChild(div[0]); 

http://codepen.io/anon/pen/sglIk

관련 문제