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 ui sortable拖拽后保存位置
Apr 27 jQuery
最常用的jQuery表单验证(简单)
May 23 jQuery
jQuery remove()过滤被删除的元素(推荐)
Jul 18 jQuery
jquery实现下拉菜单的手风琴效果
Jul 23 jQuery
基于jQuery实现定位导航位置效果
Nov 15 jQuery
jQuery实现鼠标响应式淘宝动画效果示例
Feb 13 jQuery
[原创]jQuery实现合并/追加数组并去除重复项的方法
Apr 11 jQuery
使用jquery DataTable和ajax向页面显示数据列表的方法
Aug 09 jQuery
jQuery pjax 应用简单示例
Sep 20 jQuery
JQuery中DOM节点的操作与访问方法实例分析
Dec 23 jQuery
JavaScript枚举选择jquery插件代码实例
Nov 17 jQuery
jquery实现鼠标悬浮弹出气泡提示框
Dec 23 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编写PDF文档生成器
2006/10/09 PHP
php调用mysql存储过程
2007/02/14 PHP
php从字符串创建函数的方法
2015/03/16 PHP
php轻松实现文件上传功能
2016/03/03 PHP
破解Session cookie的方法
2006/07/28 Javascript
保证JavaScript和Asp、Php等后端程序间传值编码统一
2009/04/17 Javascript
使用Jquery实现点击文字后变成文本框且可修改
2013/09/21 Javascript
JavaScript获取客户端计算机硬件及系统等信息的方法
2014/01/02 Javascript
jQuery圆形统计图开发实例
2015/01/04 Javascript
JavaScript静态类型检查工具FLOW简介
2015/01/06 Javascript
jQuery实现简单二级下拉菜单
2015/04/12 Javascript
JS实现点击事件统计的简单实例
2016/07/10 Javascript
jQuery基于BootStrap样式实现无限极地区联动
2016/08/26 Javascript
JS代码实现百度地图 画圆 删除标注
2016/10/12 Javascript
JS实现图片高斯模糊切换效果的焦点图实例
2017/01/21 Javascript
vue-router路由与页面间导航实例解析
2017/11/07 Javascript
Vuex的初探与实战小结
2018/11/26 Javascript
javascript中的event loop事件循环详解
2018/12/14 Javascript
js实现列表按字母排序
2020/08/11 Javascript
基于p5.js 2D图像接口的扩展(交互实现)
2020/11/30 Javascript
详解python 拆包可迭代数据如tuple, list
2017/12/29 Python
python3使用腾讯企业邮箱发送邮件的实例
2019/06/28 Python
python判断一个对象是否可迭代的例子
2019/07/22 Python
python十进制转二进制的详解
2020/02/07 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
2020/12/24 Python
Auchan Direct波兰:欧尚在线杂货店
2016/10/19 全球购物
黑猩猩商店:The Chimp Store
2020/02/12 全球购物
幼儿园大班毕业感言
2014/02/06 职场文书
餐饮采购员岗位职责
2014/03/15 职场文书
自主招生自荐信格式范文
2015/03/25 职场文书
论文答辩开场白大全
2015/05/27 职场文书
2015年教师节主持词
2015/07/03 职场文书
生日宴会家属答谢词
2015/09/29 职场文书
信息技术研修心得体会
2016/01/08 职场文书
电力培训学习心得体会
2016/01/11 职场文书
MySQL数据库⾼可⽤HA实现小结
2022/01/22 MySQL