特定の命名スキームを共有する不明な量の識別子がある場合、jQueryを使用して一度にそれらを取得する方法はありますか?
// These are the IDs I'd like to select
#instance1
#instance2
#instance3
#instance4
// What do I need to add or how do I need to modify this jQuery selector in order to select all the IDs above?
("#instanceWILDCARD").click(function(){}
属性はセレクタで始まる('^=
) は、次のようにIDに対して機能します。
$("[id^=instance]").click(function() {
//do stuff
});
ただし、たとえば、要素に共通のクラスを与えることを検討してください(私は自分自身を解体します).instance
、およびそのセレクターを使用します。
$(".instance").click(function() {
//do stuff
});
IDではなくクラスを本当に一致させたい場合、クラスは複数の値を持つことができるため、構文がもう少し複雑になります。
// handle elements like <div class="someclass1"></div>
$('[class^="someclass"]').click(function() {
// do stuff
});
// handle elements like <div class="foo someclass1"></div>
$('[class*=" someclass"]').click(function() {
// do stuff
});
(jQueryのセレクター機能を拡張することによって)独自のフィルターセレクターの作成について誰も言及していないことに驚いています。ここでは、ワイルドカード文字列を受け入れ、一致するすべての要素を検索する「likeClass」および「likeId」と呼ばれるワイルドカードセレクターを作成しました(Regexマッチングに類似)。
コード:
$.expr[':'].likeClass = function(match){
return $('[class*=" '+ match +'"]');
};
$.expr[':'].likeId = function(match){
return $('[id*=" '+ match +'"]');
};
使用例:
ここで、.content-1、.content-2、.content-n ...などの類似した名前のdiv要素が複数あり、それらを選択するとします。今はケーキです!
$( 'div:likeClass(content-)'); //同様のクラス名を持つすべての要素を返します:content- *
または
$( 'div:likeClass(content-)'); //同様のIDを持つすべての要素を返します:content- *
ああ、もう一つ...あなたもそれを連鎖させることができます。 :)
$('li:likeId(slider-content-)').hide().addClass('sliderBlock').first().fadeIn('fast');
楽しい!
JQueryがあれば追加のexprや派手なものは必要ありません
jQuery('[class*="someclass"]').click(function(){
});
jQuery('[id*="someclass"]').click(function(){
});
なぜ_class = "instance"
_をそれらすべてに割り当て、$('.instance')
を使用して選択しないのですか?
これらはIDですが、次のようなことができます:
$("[id^='instance']").click(...)
それは少し高価です-a)要素のタイプまたはb)DOMの一般的な位置のいずれかを指定できる場合に役立ちます:
$("#someContentDiv span[id^='instance']").click(...)
[id^='...']
セレクタは、基本的には「id$=
(IDはこの文字列で終わる)など.
JQuery Docsページ here で包括的なリストを見つけることができます。