原生js实现addClass,removeClass,hasClass方法
作者:bea
本文分为两部分进行讲解,具体内容如下 第一部分:原生js实现addClass,removeClass,hasClass方法 function hasClass(elem, cls) { cls = cls || ''; if (cls.replace(/s/g, '').length == 0) return false; //当cls没有参数时,返回false return new RegExp(' ' + cls + ' ').test(' ' + elem.c
本文分为两部分进行讲解,具体内容如下
第一部分:原生js实现addClass,removeClass,hasClass方法
function hasClass(elem, cls) {
cls = cls || '';
if (cls.replace(/s/g, '').length == 0) return false; //当cls没有参数时,返回false
return new RegExp(' ' + cls + ' ').test(' ' + elem.className + ' ');
}
function addClass(ele, cls) {
if (!hasClass(elem, cls)) {
ele.className = ele.className == '' ? cls : ele.className + ' ' + cls;
}
}
function removeClass(ele, cls) {
if (hasClass(elem, cls)) {
var newClass = ' ' + elem.className.replace(/[
]/g, '') + ' ';
while (newClass.indexOf(' ' + cls + ' ') >= 0) {
newClass = newClass.replace(' ' + cls + ' ', ' ');
}
elem.className = newClass.replace(/^s+|s+$/g, '');
}
}
第二部分:使用原生JS实现jQuery的addClass, removeClass, hasClass函数功能
function addClass(obj, cls){
var obj_class = obj.className,//获取 class 内容.
blank = (obj_class != '') ? ' ' : '';//判断获取到的 class 是否为空, 如果不为空在前面加个'空格'.
added = obj_class + blank + cls;//组合原来的 class 和需要添加的 class.
obj.className = added;//替换原来的 class.
}
function removeClass(obj, cls){
var obj_class = ' '+obj.className+' ';//获取 class 内容, 并在首尾各加一个空格. ex) 'abc bcd' -> ' abc bcd '
obj_class = obj_class.replace(/(s+)/gi, ' '),//将多余的空字符替换成一个空格. ex) ' abc bcd ' -> ' abc bcd '
removed = obj_class.replace(' '+cls+' ', ' ');//在原来的 class 替换掉首尾加了空格的 class. ex) ' abc bcd ' -> 'bcd '
removed = removed.replace(/(^s+)|(s+$)/g, '');//去掉首尾空格. ex) 'bcd ' -> 'bcd'
obj.className = removed;//替换原来的 class.
}
function hasClass(obj, cls){
var obj_class = obj.className,//获取 class 内容.
obj_class_lst = obj_class.split(/s+/);//通过split空字符将cls转换成数组.
x = 0;
for(x in obj_class_lst) {
if(obj_class_lst[x] == cls) {//循环数组, 判断是否包含cls
return true;
}
}
return false;
}
以上就是本文的全部内容,希望对大家学习javascript程序设计有所帮助。
有用 | 无用
第一部分:原生js实现addClass,removeClass,hasClass方法
function hasClass(elem, cls) {
cls = cls || '';
if (cls.replace(/s/g, '').length == 0) return false; //当cls没有参数时,返回false
return new RegExp(' ' + cls + ' ').test(' ' + elem.className + ' ');
}
function addClass(ele, cls) {
if (!hasClass(elem, cls)) {
ele.className = ele.className == '' ? cls : ele.className + ' ' + cls;
}
}
function removeClass(ele, cls) {
if (hasClass(elem, cls)) {
var newClass = ' ' + elem.className.replace(/[
]/g, '') + ' ';
while (newClass.indexOf(' ' + cls + ' ') >= 0) {
newClass = newClass.replace(' ' + cls + ' ', ' ');
}
elem.className = newClass.replace(/^s+|s+$/g, '');
}
}
第二部分:使用原生JS实现jQuery的addClass, removeClass, hasClass函数功能
function addClass(obj, cls){
var obj_class = obj.className,//获取 class 内容.
blank = (obj_class != '') ? ' ' : '';//判断获取到的 class 是否为空, 如果不为空在前面加个'空格'.
added = obj_class + blank + cls;//组合原来的 class 和需要添加的 class.
obj.className = added;//替换原来的 class.
}
function removeClass(obj, cls){
var obj_class = ' '+obj.className+' ';//获取 class 内容, 并在首尾各加一个空格. ex) 'abc bcd' -> ' abc bcd '
obj_class = obj_class.replace(/(s+)/gi, ' '),//将多余的空字符替换成一个空格. ex) ' abc bcd ' -> ' abc bcd '
removed = obj_class.replace(' '+cls+' ', ' ');//在原来的 class 替换掉首尾加了空格的 class. ex) ' abc bcd ' -> 'bcd '
removed = removed.replace(/(^s+)|(s+$)/g, '');//去掉首尾空格. ex) 'bcd ' -> 'bcd'
obj.className = removed;//替换原来的 class.
}
function hasClass(obj, cls){
var obj_class = obj.className,//获取 class 内容.
obj_class_lst = obj_class.split(/s+/);//通过split空字符将cls转换成数组.
x = 0;
for(x in obj_class_lst) {
if(obj_class_lst[x] == cls) {//循环数组, 判断是否包含cls
return true;
}
}
return false;
}
以上就是本文的全部内容,希望对大家学习javascript程序设计有所帮助。
有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- 浅析jQuery事件之on()方法绑定多个选择器,多个事件
- js实现人民币大写金额形式转换
- javascript实现不同颜色Tab标签切换效果
- JS代码随机生成姓名、手机号、身份证号、银行卡号
- JavaScript弹窗基础篇
- jQuery绑定事件on()与弹窗的简要概述
- jQuery.form插件的使用及跨域异步上传文件
- js实现纯前端的图片预览
- 简介BootStrap model弹出框的使用
- js调用webservice构造SOAP进行身份验证
- javascript实现延时显示提示框特效代码
- JS延时器提示框的应用实例代码解析
- 基于JS实现Android,iOS一个手势动画效果
- requireJS使用指南
- vue,angular,avalon这三种MVVM框架优缺点
- 浏览器兼容的JS写法总结
- Vue.js基础知识汇总
- JS onkeypress兼容性写法详解
- 使用vue.js开发时一些注意事项