2009-06-30 6 views
30

私は、ASP.NETリピータによって生成された次のHTMLを持っている:私はそれの隣の列を操作することができるように値で隠しフィールドを選択するにはどうすればよいですか?

<table> 
    <tr> 
    <td><input type="hidden" name="ItemId" id="ItemId" value="3" /></td> 
    <td>Terry</td> 
    <td>Deleted</td> 
    <td>Low</td> 
    <td>Jun 21</td> 
    </tr> 
    <!-- rows repeat --> 
</table> 

はどのようにして、値によって特定のhiddenフィールドを選択しますか?

+2

は、なぜあなたは自分のための人生を容易にし、IDによってフィールドを得ることはありませんか? – RichardOD

+0

IDで取得できない場合、誰かが来て、ページに入力を追加し、両方が同じ値を持つ場合はエラーが発生する可能性があります。 IDによってそれをやっているほうがはるかに安全です – jcollum

+0

@リチャード - ASP.NET Repeaterの中で、すべての隠しフィールドは異なるIDを取得します。 ctl100_ItemId、ctl101_ItemIdなどです。通常、これらのIDは$( 'id $ = ItemId')で終了しますが、これはうまくいきません。 – Kobi

答えて

83

jQuery Selectors使用して、あなたが希望する値に一致する特定の属性によって、あなたの要素をターゲットにすることができます:

$('input[value="Whatever"]'); 

この方法で、あなたが希望する値に等しい属性valueにより、input要素をターゲットにしています。

EDIT 5/14/2013:以下の回答によれば、これはjQuery 1.9以降では機能しません。

+4

$( 'input [value = Whatever]')は、こうした種類のクエリを実行するための受け入れられた方法のようです。 –

+2

Glyn Jonesが指摘しているように、これはjQuery 1.9+では動作しません。代わりの方法については、彼の答えを見てください。 –

+0

技術的には、 'value' *属性*で一致させたい場合、この答えはまだ正しいです。もちろん、jQueryはセレクタ仕様を自分の必要性に突き刺すのが大好きなので、属性セレクタは必ずしもそのように動作するわけではありません。 1.9以降では、仕様に従って動作するようになりました。つまり、マークアップで宣言された 'value'属性と' .value' DOMプロパティで* not *一致するだけです。 – BoltClock

8
$('input:hidden[value=\'3\']'); 
10

注:入力の「値」は技術的属性はないのでjQueryの1.9ので、入力[値=「バナナ」]セレクタは、もはや有効ではありません。あなたは、(はるかに読みにくい).filterを使用する必要があります。

など。

$("input").filter(function() { 
    return this.value === "banana"; 
}); 

参照:jQuery 1.9.1 property selector

+0

jQuery 1.9+を使用している場合、これは正解です。 –

+0

いいえ、まだ有効なセレクタです。 '.value' *プロパティ*とは対照的に、' value' *属性*に従って正確に一致します。 – BoltClock

関連する問題