我将首先介绍不应该表现的代码.因为它很简单,它应该说明一切.
HTML:
<input id="bla"></input>
<input id="blub"></input>
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
jQuery('#bla').attr({'value': 'a'});
jQuery('input[value="a"]').val('s');
jQuery('#blub').val('d');
jQuery('input[value="d"]').val('f');
Run Code Online (Sandbox Code Playgroud)
jsFiddle: http ://jsfiddle.net/5dww7/
问题: jQuery('input[value="d"]')未定义
这是一个错误吗?Firebug实际上说"价值"存在 - 所以选择器可能存在问题?
当您使用时,val您正在更改value 属性。当您使用时,attr您正在更改属性。
当您使用属性选择器来选择元素时,它仅在该属性存在时才起作用。
如果您需要根据元素的value属性值来选择元素,您可以使用filter:
$("input").filter(function() {
return this.value === "whatever"; //Accesses the value property
});
Run Code Online (Sandbox Code Playgroud)