2010-09-15 154 views
1
var town_imgs = $('.town_img img'); 
    var container; 
    var imggg 
    town_imgs.hover(function(){ 

     container = $('<div class="town_img_thmb">' 
       +'<span class="thmb_container ajax2"></span>' 
      +'</div>').appendTo($(this).parents('.town_wrapper').find('.thmb_wrapper')); 

     var imggg = new Image(140,100);    
     imggg.onload = function(){ 
      container.find('.thmb_container').append(this); 
     } 
     imggg.src = $(this).attr('src').replace(/\/t0\//,'/t1/');    

    },function(){ 

     container.remove(); 
     $(imggg).unbind('onload'); 

    }); 

当我在非常快速地盘旋缩略图时不起作用。它显示大约250-500ms连续2-3张图像〜Javascript - 取消onload事件

据我所知,这是因为我使用外部变量来存储当前缩略图。

是吗?

是否有解决方案来正确取消onload事件?

感谢;)

+0

发现问题。使用imggg.onload = null而不是解除绑定。 – Somebody 2010-09-15 12:00:39

+0

你应该看看使用hoverIntent http://cherne.net/brian/resources/jquery.hoverIntent.html,它在延迟中生成。 – epascarello 2010-09-15 12:13:55

回答

3

有2个问题,你想删除这个var,使您的参考是正确的:

var imggg = new Image(140,100); 

然后通过清除onload功能解除绑定设置:

imggg.onload = null; 

You can see a working demo here

+0

仅供参考,'删除imggg.onload'不起作用。 – 2014-07-16 03:50:31

+1

此代码现在无法使用。 – Kailas 2015-03-27 09:34:50