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'));

效果:

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>

效果:

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


效果:

做一个小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'
效果:

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的class属性操作addClass()与removeClass()、hasClass()、toggleClass()相关推荐

  1. jQuery 属性操作 - addClass() 和 removeClass() 方法

    实例 向第一个 p 元素添加一个类: $("button").click(function(){$("p:first").addClass("intr ...

  2. C/C++基础讲解(八十六)之游戏篇(解救人质游戏)

    C/C++基础讲解(八十六)之游戏篇(解救人质游戏) 程序之美 前言 很多时候,特别是刚步入大学的学子们,对于刚刚开展的计算机课程基本上是一团迷雾,想要弄明白其中的奥秘,真的要花费一些功夫,我和大家一 ...

  3. 计算机网络教程网线制作,图吧小白教程 篇二十六:手把手教你自制网线(夹网线水晶头)...

    图吧小白教程 篇二十六:手把手教你自制网线(夹网线水晶头) 2019-11-19 23:07:38 31点赞 309收藏 27评论 创作立场声明:咕咕咕 教程最后还是出了,不过咱现在用啥还是直接网购号 ...

  4. 全民一起玩Python提高篇第十四课:函数式编程初步(上)

    函数与数字.字符串.列表等一样,本质上都是某种存放在内存中的数据类型,都可以用一个名字(变量名.函数名 -- )指向它 一个函数与一个数字.字符串等一样,都可以赋值给一个变量.比如,如果 f 是一个函 ...

  5. JavaScript学习(八十六)—运算符知识点总结

    JavaScript学习(八十六)-运算符知识点总结 一. 运算符的分类 运算符(operator)也被称为操作符,是用于实现赋值.比较和执行算数运算等功能的符号. JavaScript中常用的运算符 ...

  6. 第八十六章 SQL命令 USE DATABASE

    文章目录 第八十六章 SQL命令 USE DATABASE 大纲 参数 描述 通过xDBC执行 第八十六章 SQL命令 USE DATABASE 设置当前名称空间和数据库. 大纲 USE [DATAB ...

  7. 黑猫互联云计算机,黑猫评测 篇二十六:解决联想轻薄本痛点,3TB性价比NAS方案,联想个人云存储A1评测...

    黑猫评测 篇二十六:解决联想轻薄本痛点,3TB性价比NAS方案,联想个人云存储A1评测 2020-09-16 13:34:46 5点赞 10收藏 4评论 联想小新Pro 13的痛点,终于找到了完美的解 ...

  8. 达芬奇密码 第八十六章

    达芬奇密码 第八十六章[@more@] 第八十六章 塞拉斯有如幽灵般迅速地绕到进攻目标的背后.等索菲发现他时,已经太迟了.她还来不及转身,塞拉斯已把枪口对准了她的脊梁骨,并用粗壮的胳膊拦腰抱住了她,拼 ...

  9. STM32驱动SDIO WIFI 介绍(十六) ---- 上位机UDP操作/代码

    代码工程的GITHUB连接:点进进入GITHUB仓库 https://github.com/sj15712795029/stm32f1_marvell88w8801_marvell8801_wifi ...

最新文章

  1. 架构的能力是不断打磨1.0,2.0成就3.0,4.0
  2. AIX查看端口被占用
  3. Android快速阅读依赖的代码,Java Android快速阅读完整文件
  4. 用java和汇编开发一个Hello World系统内核
  5. 如何设计区块链项目的通证(token)模型
  6. Java面试没过_Java面试中遇到的坑【填坑篇】
  7. linux 启动后台服务 nohup
  8. 织梦会员登录PHP,DEDECMS会员登录后跳转首页的简单实现方法
  9. Spring Integration关键案例与现实生活场景
  10. Database学习 - mysql数据类型
  11. Vue 页面加载闪现出现{{xxx}}问题
  12. 调试比较大小的 才=c语言,计算机等级二级C语言考试练习题(六)
  13. mysql主从 毫秒_MySQL主从数据库同步延迟问题解决(转)
  14. CNN提取文本特征,融合PMF模型实现推荐系统
  15. python数据分析师工资待遇_预测python数据分析师的工资
  16. Codeforces Round #164 (Div. 2):B. Buttons
  17. 阿斯加德250G固态硬盘开卡实录(主控SM2258XT,SDZNBIAMA-064G颗粒)
  18. UVA11584---区间DP
  19. 智能管家(原型)- 语音控制设备
  20. 无聊吗?写个【飞机大战】来玩吧(下篇)

热门文章

  1. Attempted to serialize java.lang.Class Forgot to register a type adapte
  2. 今日头条扣动“搜索广告”板机,步入百度“竞价排名”后尘?
  3. C++学习笔记05--函数
  4. 全球首款桌面蓝牙音箱 不见不散BV600
  5. 042MenuStrip 类
  6. Java类变量的初始化
  7. 解决图片上传 显示图片慢的问题
  8. Android系统架构开篇(深度好文,值得收藏,kotlin线程安全
  9. win7 + Caffe CPU版本安装
  10. Python|天天向上