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 Validate 校验多个相同name的方法
May 18 jQuery
jQuery、layer实现弹出层的打开、关闭功能
Jun 28 jQuery
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
Jul 17 jQuery
jQuery取得元素标签名称小结(附代码)
Aug 16 jQuery
jQuery中each方法的使用详解
Mar 18 jQuery
jQuery中的for循环var与let的区别
Apr 21 jQuery
jQuery内容过滤选择器与子元素过滤选择器用法实例分析
Feb 20 jQuery
jQuery属性选择器用法实例分析
Jun 28 jQuery
jQuery zTree插件使用简单教程
Aug 16 jQuery
jQuery操作元素追加内容示例
Jan 10 jQuery
jQuery实现的上拉刷新功能组件示例
May 01 jQuery
jQuery实现简单飞机大战
Jul 05 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爱好者站推荐
2007/03/19 PHP
如何突破PHP程序员的技术瓶颈分析
2011/07/17 PHP
JS 文件大小判断的实现代码
2010/04/07 Javascript
jquery 与NVelocity 产生冲突的解决方法
2011/06/13 Javascript
Jquery插件写法笔记整理
2012/09/06 Javascript
Js base64 加密解密介绍
2013/10/11 Javascript
jqgrid 编辑添加功能详细解析
2013/11/08 Javascript
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
2014/05/23 Javascript
Javascript控制div属性动态变化实例分析
2015/10/08 Javascript
JavaScript函数参数的传递方式详解
2017/03/06 Javascript
React Native 集成jpush-react-native的示例代码
2017/08/16 Javascript
Vue.js 2.5新特性介绍(推荐)
2017/10/24 Javascript
vue2.0在table中实现全选和反选的示例代码
2017/11/04 Javascript
javascript将非数值转换为数值
2018/09/13 Javascript
jQuery实现的隔行变色功能【案例】
2019/02/18 jQuery
Vue-resource安装过程及使用方法解析
2020/07/21 Javascript
vue中axios封装使用的完整教程
2021/03/03 Vue.js
[02:49]2018DOTA2亚洲邀请赛主赛事决赛日战况回顾 Mineski鏖战5局夺得辉耀
2018/04/10 DOTA
[52:44]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第一场 6.3
2018/06/04 DOTA
python结合selenium获取XX省交通违章数据的实现思路及代码
2016/06/26 Python
利用pyinstaller或virtualenv将python程序打包详解
2017/03/22 Python
Python3.X 线程中信号量的使用方法示例
2017/07/24 Python
python学习笔记之列表(list)与元组(tuple)详解
2017/11/23 Python
python编写微信远程控制电脑的程序
2018/01/05 Python
Flask之flask-session的具体使用
2018/07/26 Python
windows下搭建python scrapy爬虫框架步骤
2018/12/23 Python
Django restframework 源码分析之认证详解
2019/02/22 Python
python简单验证码识别的实现方法
2019/05/10 Python
python Django里CSRF 对应策略详解
2019/08/05 Python
Python解释器以及PyCharm的安装教程图文详解
2020/02/26 Python
超全Python图像处理讲解(多模块实现)
2020/04/13 Python
使用python matplotlib 画图导入到word中如何保证分辨率
2020/04/16 Python
Python限制内存和CPU使用量的方法(Unix系统适用)
2020/08/04 Python
美国在线家具网站:GDFStudio
2021/03/13 全球购物
应聘收银员个人的求职信
2013/11/30 职场文书
借条格式范本
2015/05/25 职场文书