我将首先介绍一些行为不正常的代码。因为它很简单,它应该说明一切。
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实际上说“价值”存在 - 所以选择器可能有问题吗?
答案 0 :(得分:5)
jQuery的.val()
方法更改了value属性,而不是value属性。属性equals选择器按属性选择,而不是属性(由现代浏览器中浏览器的css引擎完成)。
答案 1 :(得分:4)
当您使用val
时,您正在更改value
属性。当您使用attr
时,您正在更改属性。
当您使用属性选择器选择元素时,它仅在属性存在时才有效。
如果您需要根据value
属性的值选择元素,可以使用filter
:
$("input").filter(function() {
return this.value === "whatever"; //Accesses the value property
});