2011-02-12 66 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()会切换类,并且子菜单