【发布时间】:2011-02-14 03:55:00
【问题描述】:
我正在创建一个菜单。菜单如下。
$('.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)时,隐藏它的功能也会被触发。结果当然是第一次单击显示子菜单似乎什么也没做。我们当然知道它实际上是在解雇另一个。
有人能告诉我为什么它会触发“隐藏”功能,以及修复它的可能方法吗?或者该死的,一种更简单的写法。有很多添加/删除类正在进行。 ;)
谢谢。
【问题讨论】:
-
使用jQuery的toggle()和toggleClass()函数不是更简单吗? api.jquery.com/toggle, api.jquery.com/toggleClass ...那样,您可能根本不需要 live() 绑定,因为简单的 click() 会切换类和子菜单
-
有没有办法在 CSS 中添加悬停效果?根据我的经验,这是最简单的。也许发布 html 和 css,我们可以提供帮助。
-
jsfiddle.net/5EkZm 试试这个希望它有帮助...
-
@Smejko 我得看看这是否适用于我在这里所做的事情。谢谢。 @rcravens:不,对于这个特定的项目,CSS 中的悬停效果将无法正确工作。使用 CSS 进行悬停实际上是我首先做的。 @3nigma:谢谢。 :) 如果我无法让切换正常工作,我会看看它是如何工作的。
-
@Smejko:我不知道我以前怎么没赶上 toggle() ,但这正是我需要的。非常感谢。 :)