2012-01-25 9 views
4

私はちょうどそのように動作しないコードを提示することから始めます。それは非常に簡単なので、それ自体のために話すべきです。jQuery.val(...)はDOMを変更しませんか?

HTML:

<input id="bla"></input> 
<input id="blub"></input> 

はJavaScript:

jQuery('#bla').attr({'value': 'a'}); 
jQuery('input[value="a"]').val('s'); 

jQuery('#blub').val('d'); 
jQuery('input[value="d"]').val('f'); 

jsFiddle:http://jsfiddle.net/5dww7/

問題:jQuery('input[value="d"]')定義されていません

これはバグですか? Firebugは実際には "価値"が存在すると言っています - セレクタの問題でしょうか?

答えて

5

valを使用すると、valueプロパティが変更されます。 attrを使用すると、属性が変更されます。

属性セレクタを使用して要素を選択すると、属性がの場合にのみ機能します。

あなたがfilterを使用することができ、そのvalueプロパティの値に基づいて要素を選択する必要がある場合:

$("input").filter(function() { 
    return this.value === "whatever"; //Accesses the value property 
}); 
+0

ありがとう!私の問題を解決! –

+0

問題はありません、私は助けることができてうれしいです:) –

6

jQueryの.val()メソッドは、value属性ではなく、valueプロパティを変更します。属性のセレクタは、プロパティではなく属性で選択します(現代のブラウザではブラウザのcssエンジンによって行われます)。

関連する問題