首页 > 请教下jquery实现样式添加或移除的问题

请教下jquery实现样式添加或移除的问题

][2]

首先我想实现的效果是当我点击任何其中一个就给它添加一个class样式,然后当我点击第二个的时候,会把原先第一次点击的class remove掉,以此类推的效果,下面是自己写的jquery代码,但是实现的效果不一样,想明白其中的原理,所以想请教下实现的原理,新人求教,谢谢


实现原理:点击的li添加class,而它的其他兄弟节点删除class即可,代码如下:

$('ul li').click(function(){
    $(this).addClass('addclass').siblings('li').removeClass('addclass')
})

看楼主代码的意思,应该是移除不了addclass的

你的if只判断了当前被单击了的li是否有addclass

比如你点击了第一个li,但是原来的addclass可能在第2个li上,但是你的代码只会判断第一个li是否有addclass

不知道明白没,具体实现可以看楼上的同学


$('ul').find("li").click(function(){
    $(this).addClass('addclass').siblings('li').removeClass('addclass')
})

这个是最佳写法 !


$('ul li').click(function(){

$(this).addClass('addclass').siblings('li').removeClass('addclass')

})
我也认同这个是最佳答案


jQuery里面
$('ul li').clicl(function(){

...

});
这一句是给所有li标签添加点击事件,里面$(this)是取得当前元素(即当前被点击的li),所以你这一段的代码实现的效果是给被点击的li标签添加和删除'addclass'样式,
$('ul li').click(function(){

_this = $(this);
if(_this.hasClass('addclass')){
    return;
}else{
    $('addclass').removeClass('addclass');
    $(this).addClass('addclass');
}

})


$('ul li').click(function(){
    $(this).addClass('addclass').siblings('li').removeClass('addclass')
})

这个答案一般我也是怎么写的


$('ul li').click(function(){
    $(this).parent().find('li').removeClass('addclass')
    $(this).addClass('addclass');
})

$("ui li").click(function() {
    $(".addclass").removeClass("addclass");
    $(this).addClass("addclass");
});

============
补充:
回复@dingfangjing88
http://jsperf.com/jquery-style-toggle
这是我创建的jspref的test。

【热门文章】
【热门文章】