2013-02-13 46 views
1

我有這兩個函數來創建透明度的效果jQuery的總是重複功能

<script> 
    function trans(id) 
    { 
     $(".pris_"+id).stop().fadeOut(1000); 
     $(".pris_"+id).css({ opacity: 0.1}); 
     stop(); 
    } 

    function trans_reverse(id) 
    { 
     $(".pris_"+id).stop().fadeIn(1000); 
     $(".pris_"+id).css({ opacity: 0.8}); 
     stop(); 
    } 
</script> 


<div id="productos_image_soon" class="pris_1" onmouseover="trans('1');"onmouseout="trans_reverse('1');"> 
    Product in a few time 
</div> 

進入DIV我調用每個函數,問題是,當我把鼠標懸停在div的所有時間和遞歸模式中的第二功能執行與第一功能後,繼續執行,其效果是,當鼠標懸停在不透明度低,當鼠標移開不透明增長

Working ..... here jsfiddle.net/dSesq/

我不知道爲什麼會這樣,我已經試過了stop()函數,但問題m繼續

+0

請給小提琴 – 2013-02-13 14:07:28

+2

什麼是獨立stop()函數? – 2013-02-13 14:12:23

+3

這是沒有意義的,你在淡化的元素,但你設置它的不透明度?你爲什麼要做第二行?你想使用[fadeTo()](http://api.jquery.com/fadeTo/)! – epascarello 2013-02-13 14:12:24

回答

4

爲什麼在淡入淡出之後設置元素的不透明度是沒有意義的。使用fadeTo!

function trans(id, opacity) { 
    $(".pris_"+id).stop().fadeTo(1000, opacity); 
} 

而且你應該使用mouseentermouseleave。你也將得到奇怪的結果,將鼠標懸停在要消失的元素上。

您的代碼可以寫成

$(".trigger").on("mouseover mouseout", function(evt){ 
    var opacity = evt.type=="mouseover" ? 1 : .8; 
    $(this).stop().fadeTo(1000, opacity);  
}) 
+0

感謝您的幫助,工作正常,關心 – user1860536 2013-02-13 14:20:31