2011-02-12 110 views
0

我正在創建一個菜單。菜單如下。jQuery - 單擊並添加類觸發另一個(相關)點擊?

$('.category').mouseover(function() { $(this).removeClass('category').addClass('categoryhover'); }).mouseout(function() { $(this).removeClass('categoryhover').addClass('category'); }); 
$('.category').click(function() { $('.catmenu').removeClass('catmenu').addClass('hide'); $('.categoryact').removeClass('categoryact').addClass('category'); $('.hide', this).removeClass('hide').addClass('catmenu'); $(this).removeClass('category').addClass('categoryact'); }); 
$('.categoryact').live('click', function() { $('.catmenu').removeClass('catmenu').addClass('hide'); $(this).removeClass('categoryact').addClass('category'); }); 

點擊與類別類別的div將給該類別一個新類別(categoryact)並顯示其子菜單。想必再次點擊它會隱藏它。但是,當點擊div的新事件(categoryact)發生時,隱藏它的函數也會被觸發。當然結果是,第一次點擊,顯示子菜單,似乎什麼都不做。當然,我們知道它實際上是在發射另一個。

有人可以告訴我爲什麼它會觸發「隱藏」功能,以及一種可能的解決方法嗎?或者,該死的寫這個更簡單的方法。有很多add/remove-Class正在進行。 ;)

謝謝。

+1

使用jQuery的toggle()和toggleClass()函數會不會更容易? http://api.jquery.com/toggle,http://api.jquery.com/toggleClass ...這樣,你可能根本不需要live()綁定,因爲簡單的click()會切換類和子菜單 – 2011-02-12 20:56:40

+3

有沒有辦法在CSS中添加懸停效果?根據我的經驗,這是最簡單的。也許張貼的HTML和CSS,我們可以幫助。 – rcravens 2011-02-12 21:13:35

回答

1

(從評論複製過來的,所以答案是可以接受)

不會是通過使用jQuery的toggle()toggleClass()功能更容易? ... ...這樣,你可能根本不需要live()綁定,因爲簡單的click()會切換類,並且子菜單