2012-04-24 63 views
1

我有一个简单的2级菜单,如果鼠标结束,上层菜单应该得到“已选中”的类,并且在移动另一个一级菜单项时应该移除该类。但那不是问题,已经有效。add&removeClass jQuery

我的问题是:第一级menuitem应该离开“选择”,直到我去另一个一级菜单项。到现在为止我的剧本,只要我离开我的鼠标从项目

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $("#navi li").hover(function(){ 
      $(this).addClass('selected'); 
     },function(){ 
      $(this).removeClass('selected'); 
     }); 
    }); 
</script> 

我想以“选择”之类的所有项目作为我的鼠标是做好他们的阶级尽快删除删除“选择”之类的另一个项目,但是如果鼠标仅在子菜单项上或无论它是否在页面上,所选项目应保持选中状态。

回答

1

这是你在追求什么?您可以移除悬停中的所有选定类,然后将选定内容添加到所需元素。

$(document).ready(function(){ 
     $("#navi li").hover(function(){ 
      $("#navi li").removeClass('selected'); 
      $(this).addClass('selected'); 
     } 
    }); 
+0

打我吧,奥利! – 2012-04-24 13:35:55

+0

是的,那是第一个问题。非常感谢你。 第二个问题是,我想要选择“选定”项目,直到鼠标移动到另一个项目上。但它应该保持选中状态,如果我只在页面上滚动。 – user1353789 2012-04-24 13:36:58

+0

您是否问如果您向下滚动页面,选定的课程是否可以留下来?这种解决方案将做到这一点:http://jsfiddle.net/ollie/8fFXM/ – Ollie 2012-04-24 13:45:18

0

尝试结合mousemove事件:

$("ul").mousemove(function (e) { 
    if (e.target.tagName == "LI") { 
     $(".selected").removeClass("selected"); 
     $(e.target).addClass("selected");   
    } 
});​ 

Demo.

0

这是因为以下琳:

},function(){ 
       $(this).removeClass('selected'); 
      }); 

这意味着,上述回调被执行时你移动鼠标..

而是做到这一点:

$(document).ready(function(){ 
      $("#navi li").hover(function(){ 
       $(this).addClass('selected'); 
      },function(){ }); 
     }); 

http://jsfiddle.net/SyvYv/

参考http://api.jquery.com/hover/

+0

问题是,它应该保持选中状态,直到我继续使用另一个项目,而不是整个时间。 如果它只在点击时被选中,并且在另一个项目上另一次点击后被移除 – user1353789 2012-04-24 13:45:51

+0

因此,您可以在点击时删除类。 而不是将'.removeclass()'作为悬停函数的第二个回调函数提供给要悬停的元素的悬停/单击函数,您希望该类元素被移除。 – RohitWagh 2012-04-24 13:48:57