jQuery.val(...)不会改变DOM?

时间:2012-01-25 20:55:47

标签: jquery jquery-selectors

我将首先介绍一些行为不正常的代码。因为它很简单,它应该说明一切。

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实际上说“价值”存在 - 所以选择器可能有问题吗?

2 个答案:

答案 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
});