1

レスポンシブウェブサイトを作成しています。モバイル版では、HTMLに多くのクラスを追加するjQuerymobileを使用しています。デスクトップ版ではこれらのクラスは必要ありません。

すべてのjQueryモバイルクラスには「ui」というプレフィックスが付いています。を使用することはできますが、クラスごとおよびHTML要素ごとに.removeClass('')個別の減速を使用する必要があります。.removeClass('')

ワイルドカードアプローチを使用して、どの要素にあるかに関係なく、uiで始まるすべてのクラスを削除するにはどうすればよいですか?

これを行うはずのjQueryalterClassというプラグインを見つけましたが、動作させることができないようです。指示に正確に従いましたが、クラスが削除されません。ここにJSFiddleを設定しました。

4

4 に答える 4

1

あなたのフィドルでは、 あなたのアンカータグはIDを持っています:<a id="#foo"

JQueryではそれをとして参照してい$('#foo')ます。これは、。を持つ要素を指しid = fooます。

フィドル

于 2012-11-04T21:56:51.007 に答える
0

これにより、任意の要素で始まるクラスが削除uiされ、効率が低下するため、より具体的なセレクターを渡すことを検討する必要があります。

uijQuery UI / mobileは、DOMのロード後にクラスを追加することがあるため、ドキュメントの準備ができた後にこれを1回実行するだけでは、クラスが再び表示されないことは保証されません。

$('*').attr('class', function(i, classes) {
    return classes.replace(/\sui[^\s]*|^ui[^\s]*/gi, '');
});

フィドル

サイトがモバイル版でない場合はライブラリを含めないなど、これを行う別の方法を見つけることを真剣に検討したいと思います。

于 2012-11-04T22:20:43.377 に答える
0

UIで始まるすべてのクラスを取得するには、これを使用できます。指定された文字列で正確に開始

//handles classes like UI1, UI2 ...
$('[class^="UI"]')

Jqueryのドキュメントで詳細を読むことができます

于 2012-11-04T22:28:49.723 に答える
0

次で始まるクラスを持つすべての要素からすべてのクラスを削除する場合UI

$('[class^=UI]').removeClass();
于 2012-11-04T22:38:31.957 に答える