2009-09-08 2 views
1

HTML :IE jQuery를 문제

<div id="media-photo"> 
    <img src="/uploads/photos/16.jpg" alt="" /> 
</div> 
<a href="/uploads/photos/5.jpg" class="img"> 
    <img src="/uploads/photos-thumbs/5.jpg" alt="" /> 
</a> 
<a href="/uploads/photos/6.jpg" class="img"> 
    <img src="/uploads/photos-thumbs/6.jpg" alt="" /> 
</a> 

JQUERY :

$(document).ready(function() { 
    $('a.img').click(function() { 
     var path = $(this).attr('href'); 

     $('#media-photo img').attr('src', path); 

     return false; 
    }); 
}); 

설명 : 위의 코드는 어떻게해야 당신이 클래스 (앵커 클릭 할 때입니다 무엇

img), # media-photo div의 이미지는 앵커의 href 속성을 기반으로 새 이미지로 변경됩니다 (href는 이미지의 상대 경로이며, 현재 img의 src를 공물).

Firefox에서 잘 작동합니다.

IE (버전 8 특별히, 이전 버전을 아직 테스트하지 않았습니다)에서 앵커를 클릭하면 이미지가 브라우저에서 열립니다.

IE에서이 작업을 수행하는 방법은 무엇입니까?

편집이 :

마침내 {} 확인 함수가 false를 반환하기 위해 시도 {}를 사용하여 문제를 해결 한 (기본 동작을 방지하기 위해). 여기에 전체 jQuery 코드는 (I 크게 관련이없는 물건을 가진 사람을 혼동하지 위를 단순화)된다

if (id != $('#media-photo img').attr('id')) { 

id에서 온 않습니다이 라인에서

$(document).ready(function() { 
    $('.box-content2 a.img').click(function() { 
     var path = $(this).attr('href'); 
     var title = $('img', this).attr('alt'); 
     var description = jQuery.trim($(this).attr('title')); 
     var id = $(this).attr('id'); 

     if (id != $('#media-photo img').attr('id')) { 

      try { 

       $('#media-photo img').attr('src', path); 
       $('#media-photo img').attr('alt', title); 
       $('#media-photo img').attr('id', id); 

       $('#content h2:first').text('You Are Viewing "' + title + '"'); 
       $('title').text('You Are Viewing "' + title + '"'); 

       if (description.length > 0) { 
        $('#content .box-container:first').removeClass('invisible'); 
        $('#content .box-container:first p').text(description); 
       } else { 
        $('#content .box-container:first').addClass('invisible'); 
       } 

       var action = '/view/favoriting-form/id/' + id; 

       $.get(action, function(data) { 
        if ($('.favoriting').length > 0) { 
        $('.favoriting').replaceWith(data); 
        } else { 
         $('#actions h3').after(data); 
        } 
       }); 

       action = '/view/rating-form/id/' + id; 

       $.get(action, function(data) { 
        if ($('.rating').length > 0) { 
         $('.rating').replaceWith(data); 
        } else { 
         if ($('.favoriting').length > 0) { 
          $('.favoriting').after(data); 
         } else { 
          $('#actions h3').after(data); 
         } 
        } 
        $('.star').rating(); 
       }); 

       action = '/view/add-media-comment/id/' + id; 

       $.get(action, function(data) { 
        $.getScript('/js/photo.js'); 
        $('#media-comments').html(data); 
       }); 

      } finally { 

       return false; 
      } 

     } 

     return false; 
    }); 
    $('#add_to_favorites').hover(function() { 
     var id = $('#media-photo img').attr('id'); 
     var action = '/view/photo/id/' + id; 
     $('.favoriting').attr('action', action); 
    }); 
    $('#rate-button').hover(function() { 
     var id = $('#media-photo img').attr('id'); 
     var action = '/view/photo/id/' + id; 
     $('.rating').attr('action', action); 
    }); 
    $('a.previous-media, a.next-media').click(function() { 
     var id = $('#media-photo img').attr('id'); 
     var href = $(this).attr('href'); 
     href = href.split('/'); 
     var p = href[href.length - 1]; 
     var url = '/view/album-photos/id/' + id + '/p/' + p; 

     $.get(url, function(data) { 
      $.getScript('/js/photo.js'); 
      $('.box-content2').html(data); 
     }); 

     return false; 
    }); 
    $('#media-comments form').submit(function() { 
     var id = $('#media-photo img').attr('id'); 
     var url = '/view/add-media-comment/id/' + id; 

     var postData = $(this).serialize() + '&add_comment=Submit'; 
     $.post(url, postData, function(data) { 
      $.getScript('/js/photo.js'); 
      $('#media-comments').html(data); 
     }); 

     return false; 
    }); 
}); 
+0

귀하의 단순화 된 예는 IE7에서 나를 위해 작동합니다. 위의 실제 코드를 IE8에서 실행 해 보았습니까? – ScottE

+0

당신의 코드는 호환 모드가 있거나없는 IE8에서 나에게 적합합니다. 그러나 이미지를 img 태그로로드하는 대신 탐색하는 Firefox에서 나에게 적합하지 않습니다. –

+0

나는 이미 try {} finally {} 블록을 사용하여 문제가 해결되었으므로 js에서 문제가 발생하더라도 false를 리턴한다. –

답변

1

를?

+0

해당 행을 삭제했습니다. 실제로 앵커에서 온다. (각 앵커는 id 속성을 가지고 있는데, 마크 업은 더 복잡하므로 가능한 한 많이 단순화했다.) var id = $ (this) .attr ('id'); –

+0

그게 분명히 문제가 아니라는 것을 분명히하기 위해, 나는 경고와 함께 ID를 확인하고 올바른 값을 가지고, 나는 또한 조건을 제거하려고 시도하고 문제가 지속됩니다. –

+0

try {} finally {}를 사용하여 문제를 해결했습니다. 원래 게시물을 확인하고 업데이트했습니다. –

1

흠, 신속을 시도하고 작동하는지 말해 :

$(document).ready(function() { 
    $('a.img').click(function(ev) { 
     var path = $(this).attr('href'); 

     $('#media-photo img').attr('src', path); 
     ev.preventDefault(); 
     return false; 
    }); 
}); 
+0

아니요, 작동하지 않습니다. –

+0

뭔가 다른 일이 있습니다. 코드를 테스트 페이지에 놓았으며 IE8에서 제대로 작동합니다.더 이상의 정보를 제공해 줄 수 있습니까? – Steerpike

+0

try {} finally {}를 사용하여 문제를 해결했으며 원래 게시물을 확인하고 업데이트했습니다. –