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

4 jquery jquery-selectors

我将首先介绍不应该表现的代码.因为它很简单,它应该说明一切.

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

use*_*654 5

jQuery的.val()方法更改了value属性,而不是value属性.属性等于选择器按属性选择,而不是属性(由现代浏览器中浏览器的css引擎完成).


Jam*_*ice 4

当您使用时,val您正在更改value 属性。当您使用时,attr您正在更改属性

当您使用属性选择器来选择元素时,它仅在该属性存在时才起作用。

如果您需要根据元素的value属性值来选择元素,您可以使用filter

$("input").filter(function() {
    return this.value === "whatever"; //Accesses the value property
});
Run Code Online (Sandbox Code Playgroud)