我使用以下jQuery来更改无序列表中元素的类。它似乎不是实现这种效果的最有效方式。有没有更好的方法来写这个?
$(function() {
$('nav li a').click( function() {
$(this).parent().siblings().children().removeClass('active');
$(this).addClass('active');
});
});
由于
取值
答案 0 :(得分:47)
在这些情况下,将处理程序附加到<li>
并从<a>
点击bubble up(默认情况下会发生),通常会更简单。然后您的处理程序如下所示:
$(function() {
$('nav li').click( function() {
$(this).addClass('active').siblings().removeClass('active');
});
});
然后在您的CSS中,您只需考虑active
上的<li>
,就像这样:
li.active a { color: red; }
顺便说一句,如果你有很多<li>
个元素,你会想要.delegate()
这样使用:
$('nav').delegate('li', 'click', function() {
$(this).addClass('active').siblings().removeClass('active');
});
答案 1 :(得分:5)
另请注意,如果您要从除'active'
之外的所有元素中删除this
,那么您可以轻而易举地使用
$('.active').removeClass('active');
$(this).addClass('active');
这应该很容易在树上传播。但是,如果DOM人口密集,我可以看到它导致性能问题。
答案 2 :(得分:1)
我使用上面的代码,它正在工作
我在我的代码中使用
enter code here : function addnewStepsUpper(){
jQuery('.hide_upper_clone_class').clone().insertAfter(".upper_clone_class1");
jQuery('.upper_clone_class1').siblings().removeClass('hide_upper_clone_class');
}
由于 Vishal Sanwar