2011-05-10 3 views
1

크롬 11과 파이어 폭스 4에서 완벽하게 작동하는 jQuery 스크립트가 있는데 IE8에서는 문제가있는 것으로 보입니다. 선택자와 함께 jQuery parents() 함수를 사용하는 것과 관련이있는 것으로 보입니다. IE8에서 실행할 때 요소를 반환하지 않습니다.IE8에서 jQuery의 parents/closest (selector) 함수가 다르게 동작하는 이유는 무엇입니까?

동일한 증상을 보이는 간단한 문제를 over at jsFiddle으로 작성하여 큰 코드 조각을 방지합니다.

누가 여기에서 무슨 일이 일어날 지 말해 줄 수 있습니까?

업데이트 :closest()을 사용하면 유사한 동작이 발생하지만이 경우에 더 적합한 것으로 보입니다.

+0

IE 8은'data-'속성을 전혀 지원합니까? 'data-'가 아닌 속성을 사용하면 제대로 작동합니까? 그리고 당신은'parents()'가'nearest()'보다는 당신이 원하는 것일 것이라고 확신합니까? –

+0

@Craig : 저는 IE를 지원하려고하는 프로토 타입을 만들기 시작 했으므로 비 데이터 속성을 시도하지 않았습니다. 나는 네가 찾고있는 것보다 더 가까운 것 같다고 생각했다. 나는 그것에 대해 조사 할 것이다. –

+0

예,'closest()'를 의미했습니다. –

답변

2

섹션은 최상위 요소입니까? Internet Explorer 8에서 HTML5에 대한 지원이 부족하여 제한적인 영역으로 빠져들고있는 것 같습니다. 섹션을 div로 변경하면 코드가 그대로 작동합니다.

Section support in browsers.

+0

그게 다야! div로 섹션을 변경하면 실제로 수정됩니다. 이제는 의미 론적 마크 업과 함께 살아야 할 것입니다. 불행히도 우리 회사는 아마 IE9로 곧 업그레이드하지 않을 것입니다. Jeff에게 감사드립니다! –

+1

jQuery의 선택기 메커니즘이 브라우저 지원에 의해 제한된다는 것을 알지 못했습니다. 나는 그것을 미래에 고려해야한다. –

1

jsFiddle의 셀렉터를 살펴보면 셀렉터의 두 번째 부분을 없애면 IE8에서 제대로 작동하도록 할 수있었습니다.

$(document).ready(function(){ 
    $('a[data-detailed]').live('click', function(event){ 
     var a = $(this); 
     var key= a.attr('data-detailed'); 

     $(".detailedOverview[data-detailed="+key+"]").slideToggle('fast'); 
     $(".masterOverview").slideToggle('fast'); 
     event.preventDefault(); 
    }); 

    $('a[href=#back]').live('click', function(event){ 
     var a = $(this); 
     var detailedOverview= a.parents("[data-detailed]"); 

     $(".masterOverview").slideToggle('fast');   
     detailedOverview.slideToggle('fast'); 

     event.preventDefault(); 
    }); 
}); 

각 선택기에는 선택기 뒤에 ", fileparent"가 있습니다. 이처럼 부모를 지정할 필요가 없으며 제거 할 수 있습니다. 사실 당신은 모두 함께 모범을 없앨 수 있습니다.

+0

'fileparent'는 검색 할 컨텍스트입니다 (제공되지 않은 경우 jquery는 문서 루트에서부터 검색합니다). 이 질문의 경우 문맥은'fileParent [0]'이어야한다. 문맥이 없으면 요소는 문서 전체에서 유일합니다. 예를 들어 .detailedOverview [data-detailed = "+ key +"] "'selector. – manji

+0

필자는 단 하나의 섹션 만 사용 했었습니다.이 경우에는 fileParent가 필요 없다는 것에 대해 절대적으로 맞습니다. 그러나 페이지가 동적으로 구성되며 여러 섹션이있는 즉시 다른 섹션의 유사한 모든 개요를 전환하는 데 필요한 컨텍스트가 필요합니다. 나는 단지 하나의 섹션 만 추가함으로써 나의 예를 지나치게 단순화 시켰다고 생각한다. 미안하다. jsFiddle을 업데이트했습니다. –

관련 문제