论坛首页 Web前端技术论坛

核心只要两行即可实现添加或移除className

浏览 10761 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (8)
作者 正文
   发表时间:2011-04-29   最后修改:2011-05-02
<div id="abc" class="same new yes">1111111</div>




改进版 只有一行

function removeClass(value){
	var kls,reg=1>0 &&(kls=this.className,reg=new RegExp('(^| )'+value+'( |$)'),reg.test(this.className) && (this.className=(kls.replace(reg,'$1')).replace(/ $/,''))); 
	return this;
};
function addClass(value){
	var reg=1>0 &&(reg=new RegExp('(^| )'+value+'( |$)'),reg.test(this.className) || (this.className==='' ? (this.className=value) : (this.className+=(' '+value))));
	return this;
};
	
///removeClass.call(document.getElementById('abc'),'new');
//addClass.call(document.getElementById('abc'),['new saw try']) 一次添加多个样式 
addClass.call(addClass.call(removeClass.call(document.getElementById('abc'),'new'),'game'),'beta');



javascript确实很有意思 语法灵活 就看怎么玩
   发表时间:2011-04-29  
class属性可以换行写,可以有\r\n\t空格等字符,多处理些吧
0 请登录后投票
   发表时间:2011-04-29  
int08h 写道
class属性可以换行写,可以有\r\n\t空格等字符,多处理些吧



还能这样呀
没写过复杂的class属性,一般就只有一个
0 请登录后投票
   发表时间:2011-04-29  
理论上class的分隔符是\r\n\t空格和一个分页符,最后那个分页符几乎没人用所以忽略吧,\r\n\t和空格还是都要判断到的,比如
<div class="a
b
c"></div>
这样是合理的
0 请登录后投票
   发表时间:2011-04-29   最后修改:2011-04-29
我是在写方法 不是在写类库 你非要那么干 之能不支持
0 请登录后投票
   发表时间:2011-04-29  
……不就是把你的正则改一下么,又没说不能实现,唉……关键是你的方法给自己用还是想给大家通用
0 请登录后投票
   发表时间:2011-04-29  
大部分人都不会那么写的 在大部分人用 那些额外的匹配不是白白浪费资源 没必要为1%的人开发110%的代码
0 请登录后投票
   发表时间:2011-04-29  
enix2212 写道
大部分人都不会那么写的 在大部分人用 那些额外的匹配不是白白浪费资源 没必要为1%的人开发110%的代码


不必浪费匹配资源。方法多个参数就行了,也就是多两行代码而已。
0 请登录后投票
   发表时间:2011-04-29  
为的是把10行代码搞成一行 现在又要搞回去? 我写样式肯定不会敲回车 如果有需要 你自行修改 再说 我也不相信你每次写样式都会敲回车吧 那这些判断 有何意义
0 请登录后投票
   发表时间:2011-04-29  
算了,每个人都有自己的坚持自己的理念,编程说低端点就是敲敲键盘,说高端点其实是每个人自己的哲学,也没啥好争的
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics