2011-02-07 27 views
10

Tôi đã viết một plugin jquery để chia tỷ lệ hình ảnh lên xuống dưới. trong ví dụ 8 sự kiện tải của phiên bản lớn của hình ảnh không thành công. tôi đã thử như thsi:tải sự kiện với jquery không thành công trong IE 8

 var fullImage = container.find(options.fullSelector); 
     fullImage.attr('src', fullImageUrl).bind('load', function() { 
      content.fadeOut(options.fadeSpeed, function(){ 
       if(slideContent.size()){ 
        slideContent.slideUp(options.resizeSpeed, function(){ 
         smallImage.hide(); 
         fullImage.show(); 
         fullImage.parent().andSelf().stop().animate({ width: options.fullWidth + 'px' }, options.resizeSpeed); 
        }); 
       } 
       else{ 
        smallImage.hide(); 
        fullImage.show(); 
        fullImage.parent().andSelf().stop().animate({ width: options.fullWidth + 'px' }, options.resizeSpeed); 
       } 
      }); 
     }); 

lỗi nói: Object không hỗ trợ tài sản hoặc phương pháp.

tôi đang làm gì sai?

cảm ơn bạn

+0

Sau khi dòng đầu tiên, gõ 'alert (fullImage.length); 'để xác định nếu tìm thấy là thực sự tìm kiếm một cái gì đó. IE8 có một số quirks khi nói đến traversal. – karim79

+0

trên một lưu ý thứ hai, IE8 không phải là hạnh phúc tải bất cứ điều gì. Tôi ngạc nhiên vì nó thậm chí còn cho phép tải xuống các trình duyệt khác: D – Shrinath

+0

i với: if (fullImage.size()). không phải là như vậy? về tải: tôi đã có vấn đề ... – luksak

Trả lời

49

Đặt handler load đầu tiên, sau đó thiết lập các src.

fullImage.bind('load', function() { 
    ... 
}).attr('src', fullImageUrl); 
+2

người đàn ông, tôi sẽ tăng mười lần nếu tôi có thể. Cảm ơn bạn. – clime

+1

Giải pháp đơn giản và hiệu quả. Cảm ơn –

+0

Tôi đã có một vấn đề hơi khác so với OP nơi xử lý tải của tôi đã không bao giờ bắn, nhưng điều này cố định nó cho tôi quá. Bất cứ ai có thể giúp giải thích tại sao điều này hoạt động? Tôi đoán là IE có thể kéo hình ảnh từ bộ nhớ cache trước khi trình xử lý tải được thêm vào. Liên quan: http://davidwalsh.name/image-load-event –

0

Điều này thì sao?

var test = function($what) { 
 
    $('#debug').html('Image loaded: '+$what.width+' x '+$what.height); 
 
    console.log($what); 
 
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script> 
 
// Random image 
 
var src = "http://placehold.it/300x" + Math.round(Math.random() * (310 - 100) + 100); 
 
</script> 
 
<div id="debug">Image loading:</div>  
 
<img onload="test(this)" id="img" /> 
 

 
<script> 
 
$('#img')[0].src = src; 
 
</script>

Các vấn đề liên quan