jQuery - click和addclass触发另一个(相关)点击?

时间:2011-02-12 20:41:14

标签: jquery css menu

我正在创建一个菜单。菜单如下。

$('.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 个答案:

答案 0 :(得分:1)

(从评论中复制,因此可以接受答案)

使用jQuery的toggle()toggleClass()功能会不会更容易? ...那样,你可能根本不需要live()绑定,因为简单的click()会切换类和子菜单