1

I've following HTML,

 <input type=text id='input_field_1` class='row'/>
 <input type=text id='input_field_2` class='row'/>
 <input type=text id='optional_field_3` class='row'/>

In above DOM if I want to select the elements who's id starts with input_field_ then I'm able to achieve this by $("input[id^='input_field_']")

Now some more input elements are added to existing DOM structure,those are

 <input type=text id='input_field_min_4` class='row'/>
 <input type=text id='input_field_max_5` class='row'/>
 <input type=text id='optional_field_6` class='row'/>

If I use $("input[id^='input_field_']") then all the elements starting with input_field_, including input_field_min_4 and input_field_max_5 are also selecting.

I don't want this, I want to exclude input_field_min_4 and input_field_max_5,for that if do some like $("input[id^='input_field_'],input:not[id^='input_field_m']") then result is not getting what I expect.

4

4 に答える 4

3

お持ちのセレクターは無効であり、JavaScriptエラーが発生します。の周りに括弧がありません:not

console.log($("input[id^='input_field_'],input:not([id^='input_field_m'])"));
                                                  ^                     ^

ただし、それらが追加された場合でも,、セレクター間に存在すると、選択するid="^input_field_" かどうかid="^input_field_m"決まり、実際にはすべての入力に一致します。

属性セレクター( CSS属性セレクターの組み合わせ)と否定疑似クラスを組み合わせる必要がある:notため、以下では最初の2つの<input>要素を選択します。

console.log($('input[id^="input_field_"]:not([id^="input_field_m"])'));

また、問題のHTMLコードは、一貫性のない引用符を使用しています。バックティックがいくつかの問題を引き起こしている可能性があります。

于 2013-03-20T09:05:51.393 に答える
2

not次の方法を使用できます。

$("input[id^='input_field_']").not('[id*=min], [id*=max]');

http://jsfiddle.net/A5Gn8/

これらのセレクターは効率的ではないことに注意してください。可能であれば、要素の選択に別のロジックを使用することを検討する必要があります。

より高速なオプション:

$("input").filter(function(){
   return this.id.match(/^input_field_\d/);
});

http://jsfiddle.net/Ueeht/

于 2013-03-20T08:59:11.553 に答える
1

これでうまくいくはずです:

$("input[id^='input_field_']").not("[id^='input_field_m']");

ただし、この区別を行い、セレクターを単純化するには、追加の属性(roleたとえば、属性など)を使用する方がよいと考えてください。dataたとえば、tbeseの追加入力が、のようなものでマークされている場合data-limit="min"data-limit="max"セレクターは...と同じくらい簡単になります。

$("input[id^='input_field_']").not("[data-limit]");
于 2013-03-20T08:58:08.737 に答える
1

セレクターをコンマで区切るとor条件が作成されます。ここで必要なandのは、条件を組み合わせて、を使用してIDを除外する必要があることです。:not

ライブデモ

$("input[id^=input_field_]:not([id^=input_field_m])");
于 2013-03-20T08:58:40.707 に答える