Javascript - 取消 onload 事件

5
    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-500毫秒内连续显示2-3张图片。

据我了解,这是因为我正在使用外部变量来存储当前缩略图。

是这样吗?

有没有适当的解决方案来取消onload事件?

谢谢 ;)


找到了问题。使用了imggg.onload = null而不是unbind。 - Somebody
你应该考虑使用hoverIntent http://cherne.net/brian/resources/jquery.hoverIntent.html,它内置了延迟。 - epascarello
2个回答

9

有两个问题,你想从中删除var,以便你的引用是正确的:

var imggg = new Image(140,100);

然后通过清除您设置的 onload 函数来解除绑定:

imggg.onload = null;

您可以在这里看到一个工作演示


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接