2012-01-25 42 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"]')未定義

這是一個錯誤?螢火蟲實際上說「價值」存在 - 所以選擇器可能有問題?

回答

5

當您使用val時,您正在更改value屬性。當您使用attr時,您正在更改屬性

正如你然後使用屬性選擇器來選擇元素,它只會在屬性存在時才起作用。

如果你需要根據自己的value屬性值選擇元素,你可以使用filter

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

謝謝!解決了我的問題! –

+0

沒問題,很高興我可以幫助:) –

6

jQuery的.val()方法更改value屬性,而不是value屬性。屬性equals選擇器通過屬性選擇,而不是屬性(這是由瀏覽器在現代瀏覽器中的css引擎完成的)。