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