본문 바로가기

Local Oriented/jQuery

인터넷 익스플로러 IE 10 에서 $(this).get(0) 나 $(this)[0] 사용 불가

어느날인가 화면이 정상작동 하지 않는다는 고객 VOC 를 접하게 되었는데, 아무리 해도 나는 잘 나오는데..

머리를 쥐어 뜯다가, IE 10 에서 호환성 보기를 끄고 해 보니 어라.. 작동하지 않네.

아.. 갑자기 멘붕. MS 가  사고 쳤구나..


암튼, 왜 작동하지 않나 하고 이것저것 체크해 가며 확인하였더니..

소스 중에 아래 내용을 IE 10 기본 모드에서 인식하지 못하였던 겁니다.


HTML 태그에는

... <tagA id="id1" ... attr1="..." attr2="..." ...> ...


자바스크립트에는

$('#id1').each(function(){

  var o = $(this).get(0);

  func1(o.attr1, o.attr2);

});


상기 코드가 다른 브라우저에서는 정상 작동하는데 IE 기본 모드(호환성보기가 꺼진 상태)에서는 오동작.

alert(...) 함수를 사용해서 찍어 보니, o.attr1 이나 o.attr2 나 모두 undefined 로 찍혀요.


그래서 아래와 같이 고쳤더니 정상 동작.

$('#id1').each(function(){

  var attr1 = $(this).attr('attr1');

  var attr2 = $(this).attr('attr2');

  func1(attr1, attr2);

});


물론, 아래와 같이 고쳐도 정상 동작. jQuery 가 항상 깔끔한 것은 아니에요.

$('#id1').each(function(){

  func1(this.attr1, this.attr2);

});


.Fine.