ワイルドカードまたは正規表現(正確な用語は不明)をjQueryセレクターで使用することについてのドキュメントは私が担当しています。
私はこれを自分で探しましたが、構文とその使い方についての情報を見つけることができませんでした。誰かが構文のドキュメントがどこにあるか知っていますか?
編集:属性フィルタを使用すると、属性値のパターンに基づいて選択できます。
James Padolseyは 素晴らしいフィルタを作成しました それは正規表現を選択に使うことを可能にします。
次のようなdiv
があるとしましょう。
<div class="asdf">
Padolseyの:regex
フィルタはそれを次のように選択できます。
$("div:regex(class, .*sd.*)")
また、セレクタに関する 公式ドキュメント を確認してください。
filter
関数を使用すると、より複雑な正規表現のマッチングを適用できます。
これは最初の3つのdivにちょうど合う例です。
$('div')
.filter(function() {
return this.id.match(/abc+d/);
})
.html("Matched!");
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="abcd">Not matched</div>
<div id="abccd">Not matched</div>
<div id="abcccd">Not matched</div>
<div id="abd">Not matched</div>
これらは役に立ちます。
を含む で検索している場合は、このようになります。
$("input[id*='DiscountType']").each(function (i, el) {
//It'll be an array of elements
});
で始まる場合 その後、このようになります。
$("input[id^='DiscountType']").each(function (i, el) {
//It'll be an array of elements
});
で終わる場合 その後、次のようになります。
$("input[id$='DiscountType']").each(function (i, el) {
//It'll be an array of elements
});
idが与えられた文字列ではない要素を選択したい場合
$("input[id!='DiscountType']").each(function (i, el) {
//It'll be an array of elements
});
idが与えられたWordを含み、スペースで区切られた要素を選択したい場合
$("input[id~='DiscountType']").each(function (i, el) {
//It'll be an array of elements
});
idが与えられた文字列と等しいか、またはその文字列で始まりハイフンが続く要素を選択したい場合
$("input[id|='DiscountType']").each(function (i, el) {
//It'll be an array of elements
});
属性表現が特定の文字列で始まるかどうかをテストすることに限定して正規表現を使用する場合は、^ jqueryセレクタを使用できます。
例えば、 "abc"で始まるidを持つdivだけを選択したい場合は、$("div[id^='abc']")
を使用できます。
正規表現の使用を避けるための非常に便利なセレクターの多くはここで見つけることができます: http://api.jquery.com/category/selectors/attribute-selectors/
var test = $('#id').attr('value').match(/[^a-z0-9 ]+/);
どうぞ!
iDとクラスはまだ属性なので、適切に選択した場合はそれらに正規表現属性フィルタを適用できます。ここでもっと読んでください: http://rosshawkins.net/archive/2011/10/14/jquery-wildcard-selectors-some-simple-examples.aspx
JQuery関数を追加します。
(function($){
$.fn.regex = function(pattern, fn, fn_a){
var fn = fn || $.fn.text;
return this.filter(function() {
return pattern.test(fn.apply($(this), fn_a));
});
};
})(jQuery);
その後、
$('span').regex(/Sent/)
テキストが/ Sent /に一致するすべてのspan要素を選択します。
$('span').regex(/tooltip.year/, $.fn.attr, ['class'])
クラスが/tooltip.year/と一致するすべてのspan要素を選択します。
$("input[name='option[colour]'] :checked ")
与えられた文字列を含む要素を選択したいだけであれば、次のセレクタを使用できます。
$(':contains("search string")')
リアルタイムの例を示しています。
ネイティブJavaScriptでは、IDが "select2-qownerName_select-result"で始まる要素を見つけるために次のスニペットを使用しました。
document.querySelectorAll("[id^='select2-qownerName_select-result']");
JavascriptからjQueryに移行したとき、上記のスニペットを次のコードに置き換えました。ロジックを乱すことなく、コードの変更が少なくて済みます。
$("[id^='select2-qownerName_select-result']")