hasClass()
を使用すると、指定された文字列で始まるクラスを検索できますか?
複数のクラスを調べて、文字列で始まるクラスが少なくとも1つ存在するかどうかを調べたいとします。hasClass()は文字列で始まります
string: "old"
これは可能なのですか、含まれているかワイルドカード検索もできますか?
hasClass()
を使用すると、指定された文字列で始まるクラスを検索できますか?
複数のクラスを調べて、文字列で始まるクラスが少なくとも1つ存在するかどうかを調べたいとします。hasClass()は文字列で始まります
string: "old"
これは可能なのですか、含まれているかワイルドカード検索もできますか?
セレクタは次のようになります。[class^=old]
したがって:
$('[class^=old]')
[attr^=vvv]
=>すべての要素が属性attr
を持って、その値がvvv
で始まる]を選択します。
[attr$=vvv]
=>すべての要素が属性attr
を選択し、値の末尾がvvv
になります。
[attr*=vvv]
=>すべての要素が属性attr
であることを選択し、その値にはvvv
が含まれます。
Is
ないhasClass
:あなたのケースでは、is
方法がよりhasClass
適している:
if (element.is('[class^=old]')){
}
そしてない
if (element.hasClass('[class^=old]')){
}
$.fn.hasClassStartsWith=function(prefix){
return $(this).is(`[class^=${prefix}]`);
};
:
if (element.hasClassStartsWith('old')){
// do your staff
}
答えは 'hasClassStartsWith'プラグインで更新されました –
それは役に立ちますか? @agent –
これは非常に役に立ちますが、私が使っているとき( "[class^= old]")私は間違っています... は( "[class * = old]")です。 多分([class =])does notは各クラスを個別に見ていますが、すべてのクラスを1つの文字列としてまとめていますか? hasClass(セレクタ)は各クラスを見てクラスの1つがセレクタかどうかを調べます。 –
基本的には2部チェックする必要があります。セレクタを実行すると、単語を含むクラスを見つけることができます。
"old"、 "cold"、 "bold"を見つけようとしています。あなたが使うことができない理由は、クラスが "古い"ことができ、古いものから始めることができないからです。
これを行うには、正規表現をループして一致させるよりも、クラスリストの先頭に単語が含まれているかどうかを確認してください。
var elems = $('[class*="old"]').filter(function() {
return $(this).attr("class").match(/(^|\s)old/);
}).addClass("picked");
.picked { background-color: yellow; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="old">old</div>
<div class="old-asdf">old-asdf</div>
<div class="foo-old-asdf">foo-old-asdf</div>
<div class="cold">cold</div>
<div class="old foo">old foo</div>
<div class="foo old">foo old</div>
<div class="foo olddoo">foo olddoo</div>
<div class="foo ald">foo ald</div>
あなたは... –
document.getElementsByClassName( "古い")やっていることを提供します。 ... –
より良い解決策のような音は、複数のクラスを使用することで、パーシャルを見る必要はありません。アトリビュートセレクタを使用することはできますが、個々のクラス名を調べることはなく、開始するクラス名を確認することもできます。 – epascarello