2013-02-13 47 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