2

私はいくつかのボタンを持っています。クリックすると、テキスト フィールドからすべてのクラスを削除したいと思います。
現在、これは私が持っているものですが、コードは最適化されていません。

var maintextarea = $('.myTextArea');
$('#styleBtn1').click(function(){
    maintextarea.removeClass('fromStyleBtn2 fromStyleBtn3');
    maintextarea.addClass('fromStyleBtn1');
    return false;
});
$('#styleBtn2').click(function(){
    maintextarea.removeClass('fromStyleBtn1 fromStyleBtn3');
    maintextarea.addClass('fromStyleBtn2');
    return false;
});
$('#styleBtn3').click(function(){
    maintextarea.removeClass('fromStyleBtn1 fromStyleBtn2');
    maintextarea.addClass('fromStyleBtn3');
    return false;
});


質問removeClass:ボタンをクリックすると、以前のすべてのクラスが無効になり、クラスが追加されるように、その部分を書き直すにはどうすればよいですか?

4

4 に答える 4

1

.removeClass()の jQuery ドキュメントから直接参照してください。

既存のすべてのクラスを別のクラスに置き換えるには、次を使用できます .attr('class', 'newClass')

于 2012-05-27T01:31:36.590 に答える
1

メソッドチェーンを使用するだけで

maintextarea.removeClass().addClass('fromStyleBtn1');

パラメータなしで removeClass() を呼び出すと、すべてのクラスが削除されます。

編集: コード全体をこの一般的な形式のように置き換えることができます..クラス名が常に「from」+elementID の形式であると仮定します。(例:fromStyleBtn2)

var maintextarea = $('.myTextArea'); 
$('.fromStyleBtn1,.fromStyleBtn2,.fromStyleBtn3').click(function(){
    var item=$(this);
    var newClassName="from"+item.attr("id");
    maintextarea.removeClass().addClass(newClassName);
    return false;
});
于 2012-05-27T01:35:35.633 に答える
1

属性の値の一部ではなくクラス属性を本当に削除したい場合は、removeAttr()を使用してください。

于 2012-05-27T01:35:39.393 に答える
1

次のように removeClass の機能をオーバーライドできます。

$(function() {
    var originalRemoveClass=$.fn.removeClass;

    $.fn.extend({
        removeClass:function(toRemove, toAdd) {
            originalRemoveClass.call(this, toRemove);
            this.addClass(toAdd);            
        }
    });
});

ここで例を見ることができます: http://jsfiddle.net/NuGdM/1/
別のオプションは、それを行うプラグインを作成することです (例が必要な場合は、私に尋ねてください)。
幸運を!

于 2012-05-27T01:38:31.747 に答える