0

可変クラス名を使用した自動生成されたhtmlコードの操作:table-col-44, table-col-19, table-col-121など。

このjQueryセレクター機能を使用してこれらの変数クラスを選択するループがあります:

for(r in replace){
    var targ = replace[r];
    $("[class^='"+targ+"']").each(function(){
        ...
    })
}

問題は、スクラブしたいクラスを選択すると、それらをターゲットにして削除する方法が見つからないことです。多くの場合、これらは保存する必要のある他のクラス<p><td>持つタグであるため、クラス属性を完全に消去することはできません。一致したクラスを引数としてeach()関数に渡す方法はありますか?$(this).removeClass([selected])それとも、jQueryに付属しているある種のキーワードがありますか?ここで完全に困惑しました。助けてくれてありがとう!

4

2 に答える 2

2

これを行うためのより多くのjQueryの方法があるかどうかはわかりませんが、それぞれの中でこれを試すことができます:

var newClassName = $(this).attr('class').split(' ').slice(1).join(' ')
$(this).attr('class', newClassName)

と一致したため、これによりファーストクラス名が削除され^=ます。

アップデート:

removeClassに関数を渡してクラスを削除する例については、http://jsfiddle.net/DHxNG/1/を参照してください。JSは次のとおりです。

targ = 'table-col';
$('[class*="'+targ+'"]').removeClass(function(index, css) {
    var re = new RegExp(targ+"-\\d+");
    return (css.match(re) || []).join(' ');
});

これはここからのコードに基づいています:JQueryremoveClassワイルドカード

于 2013-03-25T17:10:12.810 に答える
0

オブジェクトのプロトタイプにstartsWith関数を追加して、次のようにすることができます。string

if (typeof String.prototype.startsWith != 'function') {
    String.prototype.startsWith = function (str){
        return this.indexOf(str) == 0;
    };
}

次に、一致したもので始まるクラスを削除するループは次のようになります。

for(r in replace) {
    var targ = replace[r];
    $("[class^='"+targ+"']").each(function() {
        var $element = $(this);
        var classes = $(this).attr('class').split(' ');
        for(var i = 0; i < classes.length; i++) {
            var cssClass = classes[i];
            if(cssClass.startsWith(targ)) {
                $element.removeClass(cssClass);
            }
        }
    });
}
于 2013-03-25T17:09:24.310 に答える