2009-12-16 76 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