人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

jQueryのaddClassについて

setInterval等で同じクラスを何度もつけると、厳密には内部でどのようなことが起こっているのでしょうか?

例えば<p>に$('p').addClass('selected')というクラスを付けるときに
setInterval(function(){
$('p').addClass('selected');
},1000);
とするとこれは実際にはどういう処理になっているのでしょうか?
最終的に同じクラスが何100個も付く状態になるのでしょうか?
それともjQuery側が勝手に同じクラスは付けないようにしてくれてるのでしょうか?

お手数ですがよろしくお願いいたします。


●質問者: 匿名質問者
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● 匿名回答1号

http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js

 addClass: function( value ) {
 var classes, elem, cur, clazz, j,
 i = 0,
 len = this.length,
 proceed = typeof value === "string" && value;

 if ( jQuery.isFunction( value ) ) {
 return this.each(function( j ) {
 jQuery( this ).addClass( value.call( this, j, this.className ) );
 });
 }

 if ( proceed ) {
 // The disjunction here is for better compressibility (see removeClass)
 classes = ( value || "" ).match( core_rnotwhite ) || [];

 for ( ; i < len; i++ ) {
 elem = this[ i ];
 cur = elem.nodeType === 1 && ( elem.className ?
 ( " " + elem.className + " " ).replace( rclass, " " ) :
 " "
 );

 if ( cur ) {
 j = 0;
 while ( (clazz = classes[j++]) ) {
 if ( cur.indexOf( " " + clazz + " " ) < 0 ) { // ★ココ!
 cur += clazz + " ";
 }
 }
 elem.className = jQuery.trim( cur );

 }
 }
 }

 return this;
 },


それともjQuery側が勝手に同じクラスは付けないようにしてくれてるのでしょうか?

ですっ!


匿名質問者さんのコメント
迅速な解答ありがとうございます!
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ