2009-08-10 11 views
0

このような何かリファクタリングする方法があります:このような何かに属性値のセットを持つ要素を選択できますか?

$("input[name='InputName1'],input[name='InputName2']").val(""); 

を:基本的に

$("input[name='InputName1|InputName2']").val(""); 

が、それは繰り返しの部品なしで属性値のセットに基づいて要素を選択することが可能ですセレクターの?

答えて

1

あなたが持っている最初のバージョンは、特殊なケースを無視し、それを取得と同じくらい短いです:あなたは任意の名前をしたい場合、彼らはそれが便利必要があるとしているように、それはありませんので、

$("input[name^=InputName]") 

を私は特別なケースを言いますすべての時間プレフィックス(私は仮定します)。

一般に、私は属性セレクタを試してみます。私は彼らに頼らなければならないと私は通常失敗したように感じます。試してみて、可能な場合はその代わりのマーカークラスを使用します。

$("input[name='InputName1'],input[name='InputName2']").val(""); 

あなたは彼らに「リセット」のクラスの両方を与え、実行します。

$("input.reset").val(""); 
4

おそらく、入力にクラスを与えることができますか?それで$( 'input.clearMe')だけ使うことができます。

1

あなたはそれがより良い実行して私の好ましい選択肢は、しかし、クラスだろう

$("input[name^=InputName]") 

starts withセレクタを使用することができます。

+1

は^ =ドキュメントによると – Zed

+0

がはいはいタイプミスでなければなりません(例は他の場所で入力要素と接続詞でそれらを探しに見舞われ、その性能を軽減するが)

可能であれば、クラスによる選択を避けるようにしてください!:) – redsquare

1

this questionに対する答えは、その(another pluginの助けを借りて示し)あなたはこれを行うことができます:

$('input:regex(name, InputName[12])') 
0

あなたは常にcustom selectorを書くことができ、デフォルト:)

ずつ存在しない場合 実際に

、あなたはほとんど直接リンクページからの例を使用することができます...

0

あなたは属性値で部分文字列を一致させるためattribute containsセレクタ$('input[name*=InputName]')を使用することができます。しかし、おそらく共通のrel属性やクラス名が良い方法でしょう。しかし、それは主観的だと思います。

1

入力をクラスに与えると(この質問に対する別の答えとして示唆されるように)、入力内にDOM内に固有の論理グループが存在する可能性はありますか? (例えば、テーブル内のセル内のすべて、または特定のdiv内のすべてのセル内)。

クラスに与えるのではなく、論理DOMグループでクラスを選択し、可能であれば途中でIDを追加してセレクタの処理速度を上げます。

関連する問題