【问题标题】:jQuery - click and addclass triggering another (related) click?jQuery - 单击并添加类触发另一个(相关)单击?
【发布时间】: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() ,但这正是我需要的。非常感谢。 :)

标签: jquery css menu


【解决方案1】:

(从 cmets 复制过来,所以可以接受答案)

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

【讨论】:

  • 谢谢,现在我可以投票+接受。你的建议实际上是我需要让我重回正轨的裤子。所以它最终成为了答案。 :)
猜你喜欢
  • 2016-02-08
  • 2011-04-03
  • 2016-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-06
  • 2019-08-06
相关资源
最近更新 更多