2012-08-17 5 views
1

내가 작업하고있는 기존 사이트가 있으며 특정 링크를 클릭 할 때 로고 이미지를 교체해야합니다. 이것은 파이어 폭스와 크롬 모두에서 작동하지만 IE에서는 작동하지 않습니다.jQuery 선택기가 IE에서만 작동하지 않습니다.

문제의 복잡성을 추가하려면 스크립트가 포함 된 페이지가 세 개의 프레임 세트 내에 중첩됩니다. 링크는 스크립트와 동일한 프레임 세트에 있지만 로고는 맨 위 프레임에 있습니다.

$('a.reset-logo').click(function() { 
    var img = '../images/img1.gif'; 

    var $img = $('img.header-image', window.parent.top.frames[0].document); 

    //testing 
    //shows the correct src in chrome/firefox -- undefined in IE  
    //alert($img.attr('src')); 

    $img.attr('src', img); 
}); 

예, 프레임 사용을 유지해야합니다. 이것은 재 작성이 아니라 유지 관리 문제입니다. 나는 너무 오랫동안 이것에 벽에 나의 머리를 세게 치고 있었다.

나는 window.top.frames [0] .document로 컨텍스트를 변경해 보았습니다. 문제는 선택자 안에 있으며, 나는 그것이 무엇인지 정확하게 지적하지 못합니다.

+0

어떤 버전의 IE입니까? – Kpower

+0

이것은 IE 8.0+에만 해당합니다. – jsmith

답변

0

작동하도록했습니다. 내 스크립트를 다음과 같이 변경하십시오.

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('a.reset-logo').click(function (e) { 
      var theFrame = window.parent.top.frames[0].document; 
      var theSrc = '../images/img1.jpg'; 

      $(theFrame).find('img.header-image').attr('src', theSrc); 
     }); 
    }); 
</script> 
0

http://jsfiddle.net/TJVuY/4/이 도움이 되나요? 나는 window.parent.top.frames [0] .document- 문서 자체에 대한 reffering로서 필요하지 않았습니다. 이제는 IE 8에서 작동합니다.

+0

아무 도움이되지 않습니다. 스크립트가 위치한 문서는 중첩 된 프레임 세트에 있습니다. 업데이트해야하는 요소는 이벤트가 트리거되는 문서에서 두 단계 위로 올라와 있습니다. – jsmith

관련 문제