我有一个脚本可以查看 无序列表 是否可见,如果是,它将添加一个类。我的问题是,它没有删除类(class)。可能是一个 noobie 错误,但帮助表示赞赏。

HTML:

<div class="nav">
  <ul id="menu" class="menu">
    <li id="menu0"><a href="/page/">IT Solutions</a>
    <!-- dropdown -->
    <ul>
    <li><a href="#">dropdown link</a></li>
    <li><a href="#">dropdown link</a></li>
    <li><a href="#">dropdown link</a></li>
    <li><a href="#">dropdown link</a></li>
    <li><a href="#">dropdown link</a></li>
    <li><a href="#">dropdown link</a></li>
    </ul>
    <!-- end dropdown -->
    </li>
</div>

jQuery:
$('#menu li').live('mouseenter mouseleave', function(e) {
  var element = $(this).find('ul');

  if ((element).is(':visible')) {
    $(this).addClass('hilight');
  }
  else {
    $(this).removeClass('hilight');
  }
});

我正在使用 live,因为我必须使用旧版本的 jQuery。

最佳答案

这是你想要的?我猜你错过了 child ul 的切换,它导致 is:visible 总是正确的。

http://jsfiddle.net/LR7t9/

$('#menu > li').live('mouseenter mouseleave', function(e) {
  var element = $(this).find('ul');
   element.toggle();
   $(this).toggleClass('hilight');
});

您可以使用 Hover 作为鼠标输入 mouseleave 的快捷方式:-

http://jsfiddle.net/J8tkK/
$('#menu > li').live('hover', function(e) {
  var element = $(this).find('ul');
   element.toggle();
   $(this).toggleClass('hilight');
});

关于如果下拉菜单处于事件状态,jQuery 添加类,否则删除类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16302512/

10-12 12:31
查看更多