【问题标题】:add & removeClass jQuery添加和删​​除类 jQuery
【发布时间】:2012-04-24 13:28:21
【问题描述】:

我有一个简单的 2 级菜单,如果鼠标悬停,上层菜单应该会“选中”类,当移动到另一个一级菜单项时,应该删除该类。但这不是问题,这已经奏效了。

我的问题是:第一级菜单项应该留在“已选择”,直到我继续另一个第一级菜单项。到目前为止,只要我将鼠标从项目上移开,我的脚本就会删除“选定”类

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

我希望一旦我的鼠标位于另一个项目上时,所有具有“已选择”类的项目都将其类删除,但如果鼠标仅位于子菜单项或页面上任何可能的位置,则选中的项目应保持选中状态。

【问题讨论】:

    标签: jquery html css addclass removeclass


    【解决方案1】:

    这就是你所追求的吗?您可以在悬停时删除所有选定的类,然后将选定的类添加到所需的元素中。

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

    【讨论】:

    • 是的,这是第一个问题。非常感谢您。第二个问题是,我想让“选定”项目被选中,直到鼠标移到另一个项目上。但如果我只滚动页面,它应该保持选中状态。
    • 您是在问如果您向下滚动页面,所选课程是否可以保留。这个解决方案会这样做:jsfiddle.net/ollie/8fFXM
    • 谢谢,这很有帮助。将其更改为“单击”,现在很好。完美的是,如果预先选择的项目会淡出,而点击的项目会淡入,但我试过了,我想我需要 var 中的最后一个项目,以将其保存为 jQuery,对吗?
    • 不幸的是,如果没有插件,您将无法让 jQuery 在背景颜色之间渐变。如果跨浏览器问题不是问题,您可以使用 CSS3 为背景颜色设置动画。 stackoverflow.com/questions/4411306/…
    • 好的。让我们忘记这一点。如果我想让我的子菜单项与这个脚本一起工作,(不是 li 在“#navi”中)我必须添加第二个选择器,比如 $("#navi li, #subnavi a").hover(function ...等等,对吗?我试过了,但它不会停留在“已选择”状态,它只是从主菜单中删除所选内容,但不会停留在子菜单项上...我只是希望所选项目保持选中状态,即使页面加载新页面,这可能吗?
    【解决方案2】:

    尝试绑定到mousemove 事件:

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

    Demo.

    【讨论】:

      【解决方案3】:

      发生这种情况是因为以下 lin:

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

      这意味着当您将鼠标移出时,上述回调将被执行..

      改为这样做:

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

      http://jsfiddle.net/SyvYv/

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

      【讨论】:

      • 问题是,它应该保持选中状态,直到我继续另一个项目,而不是一直。最好的是,如果它只在点击时被选中,并在再次点击另一个项目后被删除
      • 所以你可以在点击时删除类。而不是将.removeclass() 作为悬停函数的第二个回调提供给悬停时元素的悬停/单击函数,您希望删除该类的悬停元素..
      猜你喜欢
      • 1970-01-01
      • 2011-03-24
      • 1970-01-01
      • 2011-08-21
      • 2018-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多