2009-12-16 90 views
0

有人可以帮助我这个jquery停止鼠标事件后单击事件

我想从单击事件设置元素的不同颜色。

问题是,mouseover事件使一切再次变白。所以,我绝不会从 中看到活跃(actief)课程的颜色。

我能做些什么,我已经尝试把stopevent传播()?

感谢,理查德

$("#tbestel_opties2 span").live("mouseover", function() { 
      $t=$(this); 
      if(!$t.hasClass('actief')){ 

       $t.css({'color':'#fff','backgroundColor':'#fdc601'}); 
      } 
     }); 
     $("#tbestel_opties2 span").live("mouseout", function() { 
       $t=$(this); 
       if(!$t.hasClass('actief')){ 
       $t.css({'color':'#333','backgroundColor':'#fdc601'});                   } 
     }); 

     $("#tbestel_opties input,#tbestel_opties2 span").live("click", function(e) 
     {e.stopPropagation(); 
      $t=$(this); 
       $('#tbestel_opties2 .actief').removeClass("actief").css({'color':'#333'}); 

      $t.addClass("actief") 

      $("#opties li:eq(0)").addClass("actief"); 


    }); 

回答

1

使用一个类来代替。当单击一个元素时,向该元素添加另一个类。确保在你做任何事情之前没有设置这个类。这也有一个好处,即允许您将单击元素的样式移动到您的CSS中,如果您愿意的话。

+0

谢谢,所以只使用addClass而不是css()。我会尝试。虽然我不明白为什么HasClass没有工作? – Richard 2009-12-16 01:47:14

1

停止传播函数会停止单击事件的默认行为,并且不会影响鼠标悬停。

将您对css选择器的使用更改为与这些CSS更改对应的addClass函数,您将能够获得要查找的事件的顺序。

+0

看起来像黑暗猎鹰在课堂上打了我一分钟;) – Aaron 2009-12-16 01:27:33

+0

它有时会输入一个答案令人沮丧,然后在几秒前看到有人发布完全相同的答案。 :) – 2009-12-16 13:10:59

1

试试这个在您的鼠标悬停事件:

var currentColor = $(this).css("background-color"); 
jQuery.data($(this).get(0), "basecolor", currentColor); 

它存储元数据的元素。那么你可以阅读click事件

var currentColor = jQuery.data($(this).get(0), "basecolor"); 
1

不下雨了jQuery游行,但为什么不直接使用该值:悬停伪类?

+0

我有新添加的元素,悬停不适用于现场。 – Richard 2009-12-16 02:09:07

+1

看来你正在认真地推翻事物。我并不是说用Jquery添加一个悬停类,我的意思是在类中添加一个元素,并且在样式表中定义了.class:hover ...您正在使用javascript来重新创建轮子。 – 2009-12-16 02:36:50

+0

:除IE6中的'a'标签之外,悬停不受支持。如果他需要我现在可以感谢的考虑遗留支持,那么您的解决方案将无法正常工作,因为看起来他的目标是跨度标签。 – Aaron 2009-12-18 05:20:49