jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()


Posted in jQuery onMarch 31, 2021

1.addClass()与removeClass()基本使用

addClass:添加class;removeClass:移除class,返回this对象,支持链式操作

$('div').addClass('test').removeClass('test');

另:
当一个方法要取值时返回要取的值;不需要返回时,返回this对象,方便链式调用
就像text(),当取文本时,返回文本;设置文本时,返回this

console.log ($('div').text());
console.log ($('div').text('newDiv'));

效果:
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()

2.addClass()与removeClass()参数可以是字符串也可以是函数

函数有索引和class名两个参数
当索引值为偶数时,背景颜色改变,将背景颜色的设置放在.activate下:

li {
    list-style: none;
    width: 300px;
}
.activate {
    background: #ccc;
}
<ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
</ul>
<script src="./jQuery/jquery-3.6.0.js"></script>
<script>
    $('li').addClass(function(index){
        if (index%2 ==0){
            return 'activate';//索引值符合条件,就给该元素加上activate类名
        }
    })
</script>

效果:
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()

3.想要设置多个class名,空格分开即可

jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
效果:
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()

做一个小demo

有一个简易菜单,可以点击商品和取消选中商品;点中商品时,商品栏呈蓝色背景,白色字色
css样式:

body,ul,li {
    padding: 0;
    margin: 0;
    list-style: none;
}
.item {
    width: 300px;
    background: #ededed;
    margin: 10px;
    border-radius: 10px;
}
p {
    margin: 0 10px;
    padding: 10px 0;
}
span {
    float: right;
}
button {
    width: 100px;
    color: #23a1ec;
    border-radius: 10px;
    border: 1px solid #23a1ec;
    outline: none;
    background: #fff;
    margin: 10px;
    padding: 10px;
}
.activate {
    background: #23a1ec;
    color: #fff;
} /*选中时的样式*/

菜单:

<ul>
    <li class="item">
        <p>枸杞
            <span>¥20</span>
        </p>
    </li>
    <li class="item">
        <p>红枣
            <span>¥20</span>
        </p>
    </li>
    <li class="item">
        <p>可乐
        <span>¥20</span>
        </p>
    </li>
    <li class="item">
        <p>雪碧
        <span>¥20</span>
        </p>
    </li>
    <button>buy</button>
</ul>

jq:

$('li').click(function(){
    if ( $(this).attr('class') == 'item activate' ){
        $(this).removeClass('activate');
    }else {
        $(this).addClass('activate');
    }
        
    }
)

此处的this指的是被点击的原生dom元素(其他li没有受影响),但原生dom没有addClass方法,需要转成jQuery对象,所以用$(this)

attr('class')获取的是全部类名,所以有acivate类名时要写全:'item activate'
效果:
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()

4.hasClass(‘className’)

上面的代码,在判断是否有activate时,要写全部的class名,比较麻烦,可以用hasClass判断,被匹配到的dom元素有没有其中一个有指定的类名,只要有一个元素有这个类名,就返回true

<div class="item">div1</div>
<div class="item">div2</div>
<div class="a">div3</div>
<div class="item">div4</div>
<div class="item">div5</div>

<script src="./jQuery/jquery-3.6.0.js"></script>
<script>
    console.log(
        $('div').hasClass('a')
    );
</script>

输出结果为:true,div里有包含’a’类名即可

改造前面那个小demo的jQ代码:
当有activate类名,就取消掉这个类名,没有就加上;
此处添加了click事件,被影响的只有当前被选中的这个元素,不影响其他li;

$('li').click(function(){
    if ( $(this).hasClass('activate') ){
        $(this).removeClass('activate');
    }else {
        $(this).addClass('activate');
    }
    }
)

效果依然

5.toggleClass(‘className’)

使用toggleClass方法,可以免去自己判断是否有某类名的操作
当dom元素没有这个类名时,自动添加;有这个类名时,自动移除

$('li').click(function(){
    $(this).toggleClass('activate');
    }//点击时,如果元素没有activate类名,就加上,有就移除activate
)

效果依旧
toggleClass还有第二个参数,true代表添加,false代表不添加

$(this).toggleClass('activate', true);//代表没有时添加该类名,有时不移除
$(this).toggleClass('activate', false);//代表没有时不添加,一直没有此类名
jQuery 相关文章推荐
jquery实现提示语淡入效果
May 05 jQuery
jQuery操作之效果详解
May 19 jQuery
基于jQuery和CSS3实现APPLE TV海报视差效果
Jun 16 jQuery
jQuery Collapse1.1.0折叠插件简单使用
Aug 28 jQuery
jQuery实现对网页节点的增删改查功能示例
Sep 18 jQuery
JQuery实现table中tr上移下移的示例(超简单)
Jan 08 jQuery
jQuery替换节点元素的操作方法
Mar 18 jQuery
jQuery中的for循环var与let的区别
Apr 21 jQuery
jQuery实现百度图片移入移出内容提示框上下左右移动的效果
Jun 05 jQuery
jQuery实现table表格checkbox全选的方法分析
Jul 04 jQuery
详解jquery和vue对比
Apr 16 jQuery
jQuery实现简单全选框
Sep 13 jQuery
jQuery treeview树形结构应用
Mar 24 #jQuery
jQuery实现鼠标拖动图片功能
Mar 04 #jQuery
ajax jquery实现页面某一个div的刷新效果
Mar 04 #jQuery
jquery实现广告上下滚动效果
Mar 04 #jQuery
html5以及jQuery实现本地图片上传前的预览代码实例讲解
Mar 01 #jQuery
jQuery是用来干什么的 jquery其实就是一个js框架
Feb 04 #jQuery
jQuery使用hide()、toggle()函数实现相机品牌展示隐藏功能
Jan 29 #jQuery
You might like
学习php设计模式 php实现建造者模式
2015/12/07 PHP
php简单实现文件或图片强制下载的方法
2016/12/06 PHP
thinkPHP+LayUI 流加载实现功能
2019/09/27 PHP
XRegExp 0.2: Now With Named Capture
2007/11/30 Javascript
12款经典的白富美型—jquery图片轮播插件—前端开发必备
2013/01/08 Javascript
js实现图片在未加载完成前显示加载中字样
2014/09/03 Javascript
ANGULARJS中用NG-BIND指令实现单向绑定的例子
2014/12/08 Javascript
JavaScript检测并限制复选框选中个数的方法
2015/08/12 Javascript
jquery 全选、全不选、反选效果的实现代码【推荐】
2016/05/05 Javascript
微信小程序 wx.request(OBJECT)发起请求详解
2016/10/13 Javascript
vue2.0设置proxyTable使用axios进行跨域请求的方法
2017/10/19 Javascript
JS实现读取xml内容并输出到div中的方法示例
2018/04/19 Javascript
JavaScript中发出HTTP请求最常用的方法
2018/07/12 Javascript
解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题
2018/08/24 Javascript
vue安装遇到的5个报错及解决方法
2019/06/12 Javascript
对layer弹出框中icon数字参数的说明介绍
2019/09/04 Javascript
bootstrap table实现iview固定列的效果实例代码详解
2019/09/30 Javascript
JS 创建对象的模式实例小结
2020/04/28 Javascript
Python学习笔记(一)(基础入门之环境搭建)
2014/06/05 Python
使用Python中的tkinter模块作图的方法
2017/02/07 Python
Python使用Turtle模块绘制五星红旗代码示例
2017/12/11 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
2019/06/27 Python
阿里云ECS服务器部署django的方法
2019/08/29 Python
python dumps和loads区别详解
2020/02/04 Python
python使用QQ邮箱实现自动发送邮件
2020/06/22 Python
vscode调试django项目的方法
2020/08/06 Python
教师自我鉴定范文
2013/11/10 职场文书
医科大学生的自我评价
2013/12/04 职场文书
合作协议书范本
2014/04/17 职场文书
药剂专业自荐书
2014/06/20 职场文书
城市轨道交通工程职业生涯规划书范文
2014/09/16 职场文书
党的群众路线教育实践活动方案
2014/10/31 职场文书
部门经理迟到检讨书
2015/02/16 职场文书
司机个人年终总结
2015/03/03 职场文书
2015年行政部工作总结
2015/04/28 职场文书
人与自然观后感
2015/06/16 职场文书