2014-02-06 1 views
1

Я использую jquery для обмена img src. Есть ли способ добавить эффект затухания, чтобы изображение искажалось, а не прямая мгновенная замена?добавление задержки для этой функции jquery

веселит

<img class="imgswap" data-alt-src="img1.jpg" src="img2.jpg" /> 
var sourceSwap = function() { 
    var $this = $(this); 
    var newSource = $this.data('alt-src'); 
    $this.data('alt-src', $this.attr('src')); 
    $this.attr('src', newSource); 
} 

$(function() { 
    $('img.imgswap').hover(sourceSwap, sourceSwap); 
}); 

ответ

2

Вы можете использовать следующие функции:

.mouseover(function() { 
    $(this).fadeOut(function(){ 
     //do the swapping 
     $(this).fadeIn(); 
    }); 
}) 
0
<img class="imgswap" data-alt-src="img1.jpg" src="img2.jpg" /> 

var sourceSwap = function() { 
    var newSource = $(this).data('alt-src'); 

    $(this).fadeOut(function(){ 
     $(this).data('alt-src', $(this).attr('src')); 
     $(this).attr('src', newSource); 

     $(this).fadeIn(); 
    }); 
} 

$(function() { 
    $('img.imgswap').mouseover(sourceSwap); 
}); 

Но я не уверен, что это будет в правильном контексте в этой функции.

UPD:http://jsfiddle.net/dehisok/X8ycM/1/

Исправление "очень быстро зависания" здесь.

if ($(this).hasClass('processing')) { 
    return; 
} 

$(this).addClass('processing'); 

И в конце концов:

$(this).removeClass('processing'); 
+0

Почти там спасибо. Если вы видите эту скрипку http://jsfiddle.net/X8ycM/ , когда вы навешаете и выходите очень быстро, вы просто получаете то же изображение – sam

+0

Исправлено. http://jsfiddle.net/dehisok/X8ycM/1/ –

+0

Хммм, похоже, не исправил его для меня ??? .... – sam