Skip to content

Commit 75d6182

Browse files
committed
1. add addClass,removeClass
1 parent b8d743d commit 75d6182

File tree

2 files changed

+62
-7
lines changed

2 files changed

+62
-7
lines changed

common/test.html

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@
1212
<p>这是测试p1</p>
1313
<p>这是测试p2</p>
1414
</div>
15-
<div class="a">111</div>
16-
<div class="a">222</div>
17-
<div class="a">333</div>
15+
<div class="a b">111</div>
16+
<div class="a b c">222</div>
17+
<div class="a c b">333</div>
1818

1919
<script type="text/javascript" src="../js/jing.js"></script>
2020
<script type="text/javascript" src="../js/pop.js"></script>
2121
<!--<script type="text/javascript" src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.js"></script>-->
2222
<script type="text/javascript">
23-
// var a = $.merge([1,2,3], ['a','b','c']);
23+
var a = $.merge([1,2,3], ['a','b','c']);
2424
// console.log(a);
2525
/*
2626
var a = $.map([1,2,3], function(n){
@@ -30,6 +30,8 @@
3030
*/
3131
// var b = $('.a').after('<div>我是一个兵</div>');
3232
// console.log(b);
33+
$('.a').removeClass('b');
34+
3335

3436
new $.pop();
3537
</script>

js/jing.js

Lines changed: 56 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -357,25 +357,78 @@
357357
$.fn.extend({
358358
addClass : function(value){
359359
var i = 0,
360-
j = 0,
360+
j,
361361
cur = '',
362362
elem = null,
363363
classes = [],
364364
clazz = '',
365365
len = this.length,
366+
finalValue = '',
366367
proceed = typeof value === 'string' && value;
367368

368369
if(proceed){
369370
classes = value.match(rnotwhite);
370371
for( ; i < len; i++){
371372
elem = this[i];
372373

373-
cur = elem.nodeType === 1 && elem.className ? ' ' + elem.className + ' ' : '';
374+
cur = elem.nodeType === 1 && (elem.className ? ' ' + elem.className + ' ' : '');
374375
if(cur){
376+
j = 0;
377+
378+
while((clazz = classes[j++])){
379+
if(cur.indexOf(' ' + clazz + ' ') < 0){
380+
cur += clazz + ' ';
381+
}
382+
}
383+
384+
finalValue = $.trim(cur);
385+
if(elem.className !== finalValue){ // 为了防止重绘
386+
elem.className = finalValue;
387+
}
388+
}
389+
}
390+
}
391+
392+
return this;
393+
},
394+
removeClass : function(value){
395+
var i = 0,
396+
j,
397+
cur = '',
398+
elem = null,
399+
classes = [],
400+
clazz = '',
401+
len = this.length,
402+
finalValue = '',
403+
proceed = arguments.length === 0 || typeof value === 'string' && value;
404+
405+
if(proceed){
406+
classes = value.match(rnotwhite);
407+
for( ; i < len; i++){
408+
elem = this[i];
375409

410+
cur = elem.nodeType === 1 && (elem.className ? ' ' + elem.className + ' ' : '');
411+
if(cur){
412+
j = 0;
413+
414+
while((clazz = classes[j++])){
415+
while(cur.indexOf(' ' + clazz + ' ') >= 0){
416+
cur = cur.replace(' ' + clazz + ' ', ' ');
417+
}
418+
}
419+
420+
finalValue = value ? $.trim(cur) : '';
421+
if(elem.className !== finalValue){ // 为了防止重绘
422+
elem.className = finalValue;
423+
}
376424
}
377425
}
378426
}
427+
428+
return this;
429+
},
430+
toggleClass : function(){
431+
379432
}
380433
});
381434

@@ -384,4 +437,4 @@
384437
// 2014-04-21 : 准备开发第一版
385438
// 2014-04-30 : 完成$.type, $.each等方法
386439
// 2014-05-04 : 增加$.get方法
387-
// 2014-05-05 : 以精减的方式添加:append,prepend,before,after方法,但存在tbody问题未处理;添加addClass
440+
// 2014-05-05 : 以精减的方式添加:append,prepend,before,after方法,但存在tbody问题未处理;添加addClass,removeClass

0 commit comments

Comments
 (0)