2011-07-29 2 views
3

HTML 문서에서 ID별로 요소를 가져 오는 JavaScript가 있습니다.document.getElementById()가 아닌 경우?

특정 시나리오에서 document.getElementById (idString) 메서드는 IE8 호환 모드에서 null을 반환하지만 jQuery와 동일한 기능을합니다. 네이티브 호출이 작동하지 않는 이유를 알아 내야합니다.

var myId = "e_" + someId; 
var myNativeDiv = document.getElementById(myId); 
var myjQueryDiv = $("#" + myId); 
alert(myNativeDiv + " - " + myjQueryDiv); // alerts "null - [Object object]" 

내가 myId 문서에 고유 한 것을 확인했습니다

다음은 예입니다.

조사할만한 방법이 좋습니다.


업데이트 - 실제로, myjQueryDiv도 비어,하지만 난 jQuery를이 그렇지 null이 되겠군요. 그러나 parentDom.find("#" + myId); 호출은 올바른 요소를 반환합니다. 여기서 parentDom은 찾을 필요가있는 요소의 조상입니다.

+0

html 예제를 추가 할 수 있습니까? –

+0

이 오류가 발생하는 "특정 시나리오"를 복제하기 위해 일부 HTML을 게시 할 수 있습니까? –

+0

은 myId 유형으로 인해 발생할 수 있습니다. – nidhin

답변

0

에 대한 확인 그래서 여기에 대한 대답입니다.

나는 이전에 detach() ancestor 요소를 가지고 있었기 때문에 jQuery find는 분리 된 조각의 조상 요소에서 실행될 때 ID로 요소를 볼 수있었습니다.

물론 document의 해당 부분이 아니기 때문에 jQuery는 컨텍스트없이 찾을 수 있으며 원시 메서드는 해당 요소를 올바르게 반환하지 않았습니다.

5

According to MSDN ... IE8 표준 모드

, getElementByIdID 특성 만에 대소 문자 매치를 수행한다. IE7 표준 모드 및 이전 모드에서이 메서드는 ID 및 NAME 특성 모두에서 대/소문자를 구분하지 않는 일치를 수행하므로 예기치 않은 결과가 발생할 수 있습니다.

코드가 이러한 동작 중 하나에 의존 할 수 있습니다. $(".unused-class").remove() 같은 일이 오류를 발생하지 않도록


JQuery와는 jQuery object에 그 결과를 래핑합니다. .length 또는 값을 [0]에서 확인하여 실제로 어떤 요소와도 일치하는지 확인할 수 있습니다.

관련 문제