Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 鼠标悬停问题的简单addClass_Jquery_Addclass - Fatal编程技术网

Jquery 鼠标悬停问题的简单addClass

Jquery 鼠标悬停问题的简单addClass,jquery,addclass,Jquery,Addclass,我正在尝试为一个li项目设置一个类,但没有运气。我尝试了很多东西(要发布的东西很多),但我想不出来: $("li").live("mouseover",function(){ $(this).addClass('current'); }); li项必须在mouseover(/hover)上更改类,并保持该类状态,即使鼠标悬停在ul之外。但是(这是棘手的部分)如果另一个li项目悬停,则会失去该类。这意味着被悬停的项获得“当前”类 希望它有一定的意义。这是fiddle在将该类添加到新元素之

我正在尝试为一个li项目设置一个类,但没有运气。我尝试了很多东西(要发布的东西很多),但我想不出来:

$("li").live("mouseover",function(){
    $(this).addClass('current');
});
li项必须在mouseover(/hover)上更改类,并保持该类状态,即使鼠标悬停在ul之外。但是(这是棘手的部分)如果另一个li项目悬停,则会失去该类。这意味着被悬停的项获得“当前”类


希望它有一定的意义。这是fiddle

在将该类添加到新元素之前,您应该从当前拥有该类的所有元素中删除该类:

$("li").live("mouseover", function() {
    $('.current').removeClass('current');
    $(this).addClass('current');
});


为了增加优化(即保存
$('.current')
选择,这在一些旧浏览器中可能很昂贵),您可以检查悬停的元素是否已经有类:

$("li").live("mouseover", function() {
    if (!$(this).hasClass('current')) {
        $('.current').removeClass('current');
        $(this).addClass('current');
    }
});

或者根据Felix的好主意

var current;
$("li").live("mouseover", function() {
    if (this !== current) {
        $(current).removeClass('current');
        $(this).addClass('current');
        current = this;
    }
});

只需将类从其同级中删除即可:

$("li").live("mouseover",function(){
    $(this).addClass('current');
    $(this).siblings().removeClass("current");
  });

我已经为您解决了这个问题,如果您从所有li元素中删除当前类,然后应用它,您的运气会更好。

我添加了代码。。。。这篇文章写得不多;)谢谢:)我希望我能做到这一点,这会让我省去很多麻烦。更好的是:存储对具有
当前
类的元素的引用。@Felix是的,很好的解决方案--添加到我的答案中。