2

jQuery.removeClassは、すべてのクラスを削除するためのパラメータを取らないか、スペースで区切られた 1 つ以上のクラス名を持つ文字列、またはそのような文字列を返す関数を取りません。元のhtmlで指定されたクラス以外のすべてを削除する方法があるかどうか疑問に思っています(たとえば、jQueryによって追加されたもの)。

$('.myElement').removeClass(function() {return $(this).attr('class').split(' ').slice(1).join(' ')})

最初のクラスを除くすべてを削除しますが、要素が html に複数のクラスを持っている場合、実際には機能しません。

4

4 に答える 4

2

ページが最初に読み込まれたときに、元のクラス属性のコピーを作成する必要があります。

$('[class]').each(function() {
    $(this).data('orig-class', this.className);
});

これで、「リセット」できます。

$elem.attr('class', $elem.data('orig-class'));
于 2013-07-29T01:54:50.623 に答える
0

変更をコミットする前に、クラスの元のリストを変数にキャッシュする必要があります。そうしないと、後で復元できなくなります。

私がテストした限り、新しいクラスを追加するすべてのメソッド (jQuery を使用するかどうかに関係なく) は、class属性、classNameプロパティ、およびclassList.

于 2013-07-29T01:54:35.827 に答える
0

元の属性を取り戻すことはできないと思うので、データに保存する必要があります。

例えば:

// On load, do this
myElement.data('originalclass', myElement.attr('class'));

// Later on, you can do this
myElement.attr('class', myElement.data('originalclass'));
于 2013-07-29T01:54:41.763 に答える