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序列化后的表单值转换成Json
Jun 16 jQuery
QRCode.js:基于JQuery的生成二维码JS库的使用
Jun 23 jQuery
jQuery remove()过滤被删除的元素(推荐)
Jul 18 jQuery
jQuery实现倒计时功能 jQuery实现计时器功能
Sep 19 jQuery
jQuery实现表单动态加减、ajax表单提交功能
Jun 08 jQuery
JQuery Ajax动态加载Table数据的实例讲解
Aug 09 jQuery
jQuery选择器之基本过滤选择器用法实例分析
Feb 19 jQuery
js、jquery实现列表模糊搜索功能过程解析
Mar 27 jQuery
jquery实现简单自动轮播图效果
Jul 29 jQuery
jQuery实现图片切换效果
Oct 19 jQuery
jQuery实现计算器功能
Oct 19 jQuery
JQuery+drag.js上传图片并且实现图片拖曳
Nov 18 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静态变量当缓存的方法
2013/11/13 PHP
PHP将回调函数作用到给定数组单元的方法
2014/08/19 PHP
Smarty分页实现方法完整实例
2016/05/11 PHP
Javascript 异步加载详解(浏览器在javascript的加载方式)
2012/05/20 Javascript
jQuery动态地获取系统时间实现代码
2013/05/24 Javascript
javascript中的self和this用法小结
2014/02/08 Javascript
document.write的几点使用心得
2014/05/14 Javascript
jquery实现的蓝色二级导航条效果代码
2015/08/24 Javascript
深入理解jquery自定义动画animate()
2016/05/24 Javascript
javascript 将共享属性迁移到原型中去的实现方法
2016/08/31 Javascript
使用JS在浏览器中判断当前网络连接状态的几种方法
2017/05/05 Javascript
常见的浏览器Hack技巧整理
2017/06/29 Javascript
Vue框架中正确引入JS库的方法介绍
2017/07/30 Javascript
JS判断字符串是否为整数的方法--简单的正则判断
2018/07/23 Javascript
jQuery ajax仿Google自动提示SearchSuggess功能示例
2019/03/28 jQuery
nodejs文件夹深层复制功能
2019/09/03 NodeJs
浅谈vue项目,访问路径#号的问题
2020/08/14 Javascript
简单说明Python中的装饰器的用法
2015/04/24 Python
Python模拟登录验证码(代码简单)
2016/02/06 Python
Python 找到列表中满足某些条件的元素方法
2018/06/26 Python
使用PIL(Python-Imaging)反转图像的颜色方法
2019/01/24 Python
教你如何编写、保存与运行Python程序的方法
2019/07/12 Python
python实现简易淘宝购物
2019/11/22 Python
python——全排列数的生成方式
2020/02/26 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
2020/04/02 Python
利用pyecharts读取csv并进行数据统计可视化的实现
2020/04/17 Python
python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
2020/04/24 Python
用css3写出气球样式的示例代码
2017/09/11 HTML / CSS
食品厂厂长岗位职责
2014/01/30 职场文书
初中生自我评价
2014/02/01 职场文书
田径运动会开幕式及主持词
2014/03/28 职场文书
家装业务员岗位职责
2015/04/03 职场文书
美德少年主要事迹材料
2015/11/04 职场文书
八年级作文之感恩
2019/11/22 职场文书
Python 数据可视化之Bokeh详解
2021/11/02 Python
CSS使用SVG实现动态分布的圆环发散路径动画
2022/12/24 HTML / CSS