我是jQuery的新手。使用[name = value]选择器时遇到了问题。 这是HTML:
<input type="number"/>
很简单吧? 这是JS:
$("input").val(100);
$("input[value='100']").val(200)
结果是:脚本的第一行有效,但不是第二行。(Chrome,FF,IE9) 这两行都适用于IE8。 怎么会这样?顺便说一下,我正在使用jQuery1.7.2。或者您可以在http://jsfiddle.net/wzKNV/
上测试上述代码答案 0 :(得分:6)
attribute-equals 选择器检查属性,但.val()
仅更改属性,因此选择器不会看到更新。
jQuery / Sizzle默认强制执行此“仅属性”行为的本机querySelectorAll
方法。
如果你打破了querySelectorAll
的选择器,那么必须使用Sizzle,它才会有效......
// v------made it a non-standard Sizzle selector
$(":input[value='100']").val(200);
这是因为Sizzle选择器不一定符合qSA
选择器。当然,这会稍微改变选择器的含义,但对于说明非常有用。
DEMO: http://jsfiddle.net/wzKNV/3/
要使用标准选择器(这是一个好主意IMO)来保持它,您可以使用filter()
代替......
$("input").filter(function() { return this.value === '100'; })
.val(200);
答案 1 :(得分:0)
如果
<input type="nubmer" disabled="disabled" value="100" /> // your fiddle have no `value`
然后
$("input[value='100']").val(200)
将起作用