热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HTML5新特性:元素的classList属性与应用

在html5新增的classList之前,操作元素的class用的是className这个属性,而如果要向jquery封装的hasClass,removeClass,addClass,togg

在html5新增的classList之前, 操作元素的class用的是className这个属性,而如果要向jquery封装的hasClass, removeClass, addClass, toggleClass一样优雅的操作calssName, 在以前我们要对className封装处理,如下, 下面的代码你未必能看得懂运行流程,但应该能看懂功能部分,这几段函数是取自我录制的一套视频中,讲解DOM框架封装的一部分

 1 gQuery.prototype.hasClass = function (obj, cName) {
2 //

3 return obj.className.match(new RegExp('(\\s|^)' + cName + '(\\s|$)'));
4 }
5
6 gQuery.prototype.addClass = function (cName) {
7 for (var i = 0; i <this.elements.length; i++) {
8 if (!this.hasClass(this.elements[i], cName)) {
9 // hello abc // abc
10 this.elements[i].className += " " + cName;
11 this.elements[i].className = this.trim(this.elements[i].className);
12 }
13 }
14 return this;
15 }
16
17 gQuery.prototype.removeClass = function (cName) {
18 for (var i = 0; i <this.elements.length; i++) {
19 if (this.hasClass(this.elements[i], cName)) {
20 var re = new RegExp('(\\s|^)' + cName + '(\\s|$)');
21 this.elements[i].className = this.elements[i].className.replace(re, " ");
22 this.elements[i].className = this.trim(this.elements[i].className);
23 }
24 }
25 return this;
26 }
27
28 gQuery.prototype.toggleClass = function (cName) {
29 for (var i = 0; i <this.elements.length; i++) {
30 if (this.hasClass(this.elements[i], cName)) {
31 this.removeClass(cName);
32 } else {
33 this.addClass(cName);
34 }
35 }
36 return this;
37 }

这里,我还写了一个独立的删除某个class的功能:

 1 
this is a test string

2
3

思路非常的简单,获取div元素中的所有class, 用split 按空格切割,就会得到[box1,box2,box3]这样的数组, 然后遍历判断,是否有box2这个class?

找到之后就把当前数组的索引记下来,最后再用splice把该class从数组删除得到[box1,box3] 然后把数组的每一项用join函数中的空格连接,再赋值

给元素的className.

而在html5中,每个元素都有classList这个属性, classList是一个类数组结构, 提供了4个操作class的方法: add,remove,toggle,contains,

看到这几个英文单词,你已经知道什么意思了吧,尤其对于使用过jquery的朋友

add( 添加class),   remove( 删除class), toggle( 切换class) contains( 判断是否包含某个class )

 1 
this is a test string

2
3
4
5

 


推荐阅读
  • 我在尝试将组合框转换为具有自动完成功能时遇到了一个问题,即页面上的列表框也被转换成了自动完成下拉框,而不是保持原有的多选列表框形式。 ... [详细]
  • MVC框架下使用DataGrid实现时间筛选与枚举填充
    本文介绍如何在ASP.NET MVC项目中利用DataGrid组件增强搜索功能,具体包括使用jQuery UI的DatePicker插件添加时间筛选条件,并通过枚举数据填充下拉列表。 ... [详细]
  • 本文探讨了互联网服务提供商(ISP)如何可能篡改或插入用户请求的数据流,并提供了有效的技术手段来防止此类劫持行为,确保网络环境的安全与纯净。 ... [详细]
  • 解决JavaScript中法语字符排序问题
    在开发一个使用JavaScript、HTML和CSS的Web应用时,遇到从SQLite数据库中提取的法语词汇排序不正确的问题,特别是带重音符号的字母未按预期排序。 ... [详细]
  • 拖拉切割直线 ... [详细]
  • HTML download 属性详解及应用
    本文探讨了 HTML 中 download 属性的应用场景及其在不同浏览器中的实现方式,通过示例代码展示了如何利用 JavaScript 实现文件下载功能。 ... [详细]
  • java解析json转Map前段时间在做json报文处理的时候,写了一个针对不同格式json转map的处理工具方法,总结记录如下:1、单节点单层级、单节点多层级json转mapim ... [详细]
  • 本文将指导你如何通过自定义配置,使 Windows Terminal 中的 PowerShell 7 更加高效且美观。我们将移除默认的广告和提示符,设置快捷键,并添加实用的别名和功能。 ... [详细]
  • ECharts图表绘制函数集
    本文档提供了使用ECharts库创建柱状图、饼图和双折线图的JavaScript函数。每个函数都详细列出了参数说明,并通过示例展示了如何调用这些函数以生成不同类型的图表。 ... [详细]
  • 本文探讨了Lua中元表和元方法的使用,通过具体的代码示例展示了如何利用这些特性来实现类似C语言中的运算符重载功能。 ... [详细]
  • 深入探讨Web服务器与动态语言的交互机制:CGI、FastCGI与PHP-FPM
    本文详细解析了Web服务器(如Apache、Nginx等)与动态语言(如PHP)之间通过CGI、FastCGI及PHP-FPM进行交互的具体过程,旨在帮助开发者更好地理解这些技术背后的原理。 ... [详细]
  • 本文详细介绍了在PHP中如何获取和处理HTTP头部信息,包括通过cURL获取请求头信息、使用header函数发送响应头以及获取客户端HTTP头部的方法。同时,还探讨了PHP中$_SERVER变量的使用,以获取客户端和服务器的相关信息。 ... [详细]
  • 数据输入验证与控件绑定方法
    本文提供了多种数据输入验证函数及控件绑定方法的实现代码,包括电话号码、数字、传真、邮政编码、电子邮件和网址的验证,以及报表绑定和自动编号等功能。 ... [详细]
  • Logging all MySQL queries into the Slow Log
    MySQLoptionallylogsslowqueriesintotheSlowQueryLog–orjustSlowLog,asfriendscallit.However,Thereareseveralreasonstologallqueries.Thislistisnotexhaustive:Belowyoucanfindthevariablestochange,astheyshouldbewritteninth ... [详细]
  • 在Ubuntu 18.04上使用Nginx搭建RTMP流媒体服务器
    本文详细介绍了如何在Ubuntu 18.04上使用Nginx和nginx-rtmp-module模块搭建RTMP流媒体服务器,包括环境搭建、配置文件修改和推流拉流操作。适用于需要搭建流媒体服务器的技术人员。 ... [详细]
author-avatar
红色的甜言1986
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有