2009-10-26 124 views
4

我试图让图片在点击时保持不透明,并且在悬停时显示淡入/淡出功能。点击后,它将删除一个类并向该元素添加一个“选定”类。问题在于,尽管原始类已被删除,但仍然会执行回调,就好像该类仍在元素中一样。因此,如果点击它,它会将不透明度更改为1,并删除.gallery_item类,但仍会淡出悬停时的元素。我知道代码可以改进,但它仅用于演示目的。jQuery悬停回调函数问题

悬停代码:

$(".gallery_item img").hover(
    function() { 
     $(this).fadeTo('50', 1); 
    }, 
    function() { 
     $(this).fadeTo('50', 0.6); 
    } 
); 

代码点击/使元素透明度1:

$(".gallery_item img").click(function() { 
    $('.gallery_item').removeClass('gallery_item_selected'); 
    $(this).parent().addClass('gallery_item_selected').removeClass('gallery_item'); 
    $(this).css("opacity", "1"); 
}); 

我在做什么错了/是什么更好的方式来做到这一点?

回答

8

尝试检查,如果图像具有所选择的类别的函数mouseout内应用淡入淡出效果之前:

$(".gallery_item img").hover(
    function() { 
     $(this).fadeTo('50', 1); 
    }, 
    function() { 
     if(!$(this).parent().hasClass('gallery_item_selected')) { 
      $(this).fadeTo('50', 0.6); 
     } 
    } 
); 
+0

谢谢,但所需要的类被添加到div,而不是图像。所以我将parent()添加到它。 :) – 2009-10-26 12:19:19

+0

@Constant M - 我错过了 - 我在你张贴之前编辑了它,哦,无论如何你都明白了。 – karim79 2009-10-26 12:24:04