jQuery Selector [name = value]不起作用

时间:2012-04-16 03:08:16

标签: jquery internet-explorer google-chrome jquery-selectors

我是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/

上测试上述代码

2 个答案:

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

DEMO: http://jsfiddle.net/wzKNV/4/

答案 1 :(得分:0)

如果

<input type="nubmer" disabled="disabled" value="100" />​ // your fiddle have no `value`

然后

$("input[value='100']").val(200)​​​​​​​

将起作用