2011-11-22 5 views
8

나는 언제나 jQuery가 DOM 요소 인에서만 작동한다고 생각했다. 즉, nodeType == 1을 가진 노드이다. 함수에이 방법을 만들어 어딘가에 전달jQuery는 주석 요소를 어떻게 처리합니까?

[p, Comment { data=" comment ", length=21, nodeName="#comment", more...}] (방화범 형식)

내가 AJAX와 DOM 코멘트에 의해 일부 HTML을 받아 : 나는 HTML을 만드는 동안의 $("<p> </p><!-- comment -->") 결과가 충격을 해요 그러나

요소에만 적용 할 수 있습니다. defaultView.getComputedStyle(elem, null)

깨끗한 방법이 있습니까?

답변

5

나는 항상 jQuery를 만 DOM 요소 만 해당 DOM 요소

그 선택기에서 작동 생각했다. 귀하의 경우, 제공 한 HTML 문자열에서 노드를 생성하고 있습니다. 그래서 jQuery는 문자열을 파싱하고 당신이 요구하는 노드를 돌려 준다.

청소하려면 .filter()으로하십시오.

var els = $("<p> </p><!-- comment -->").filter(function() { 
                return this.nodeType === 1; 
               }); 
+0

설명 때문에 허용. – tillda

+0

@tillda : 단지 'this.nodeType === 1' 테스트를 사용하면''* "'selector를 사용하는 것보다 빠른 작업이기는하지만, 작은 세트를 사용하더라도 눈에 띄는 차이는 없습니다 . – RightSaidFred

5

흠, 흥미로운 문제입니다. 조금만 돌아보고 난 후에 universal selector (*)으로 .filter을 사용하여 제거 할 수 있음을 알게되었습니다.

var a = $("<p></p><!-- comment -->"); 
console.log(a); 
console.log(a.filter("*")); 
관련 문제