2010-09-15 5 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'); 

    }); 

Не работает, когда я нахожу миниатюры очень быстро. Он отображает 2-3 изображения подряд примерно на 250-500 мсек.Javascript - Отменить onload event

Как я понимаю, это происходит потому, что я использую внешнюю переменную для хранения текущего миниатюры.

Не так ли?

Возможно ли решение отменить событие onload?

Спасибо;)

+0

Обнаружили проблему. Использовал imggg.onload = null вместо unbind. – Somebody

+0

Вы должны посмотреть на использование hoverIntent http://cherne.net/brian/resources/jquery.hoverIntent.html, который задерживается. – epascarello

ответ

3

Есть 2 проблемы, вы хотите удалить var от этого, так что ваша ссылка верна:

var imggg = new Image(140,100); 

Затем отвязать очистив функцию onload установить:

imggg.onload = null; 

You can see a working demo here.

+0

FYI, 'delete imggg.onload' не работает. –

+1

Этот код не работает сейчас. – Kailas

Смежные вопросы