この記事では、jQuery ソース コード解釈のremoveClass() メソッドをより詳細に分析します。皆さんの参考に共有してください。具体的な分析は次のとおりです。
removeClass() メソッドは addClass() とあまり変わりません。見てみましょう:
jQuery.fn.extend({
removeClass: function( value ) {
var クラス、elem、cur、clazz、j、finalValue、
i = 0、
len = this.length,
続行 = argument.length === 0 || 値の種類 === "文字列" && 値;
if ( jQuery.isFunction( value ) ) {
return this.each(function( j ) {
//ここに、クラス名を削除するために渡した関数によって返されたクラス名があり、removeClass 自体が再度呼び出されます。
jQuery( this ).removeClass( value.call( this, j, this.className ) );
});
}
if (続行) {
クラス = ( 値 || "" ).match( rnotwhite ) ||
for ( ; i
elem = this[i];
Cur = elem.nodeType === 1 && ( elem.className ?
( " " elem.className " " ).replace( rclass, " " ) :
""
);
If ( cur ) {
j = 0;
While ((Clazz = クラス [J]) {
// 違いは、以下の while ループにあります。現在の DOM 要素が取得され、削除するクラス名が含まれている場合、replace を使用してそれを " "
に置き換えます。
While (Cur.indexof ("Clazz") & GT; = 0) {
Cur = cur.replace( " " clazz " ", " " );
}
}
//以下も重要な違いの 1 つで、削除するクラス名の値を渡したかどうかを判断します。渡されない場合、finalValue=""、この時点で DOM 要素にクラス名がある場合、つまり条件が true の場合、DOM 要素のすべてのクラス名を削除します。
//渡された場合、一致するクラス名を削除します。削除後、削除されていないクラス名がcurに結合され、左右端のスペース文字列が削除され、DOM要素のクラス名がcur に設定します。
finalValue = 値 ? jQuery.trim( cur ) : "";
If ( elem.className !== FinalValue ) {
に
}
}
}
}
これを返します;
}
});
この記事が皆さんの jQuery プログラミングに役立つことを願っています。