jQuery Selector [name = value]不起作用

Nig*_* Wu 2 jquery internet-explorer google-chrome jquery-selectors

我是jQuery的新手.使用[name = value]选择器时遇到了问题.这是HTML:

<input type="number"/>
Run Code Online (Sandbox Code Playgroud)

很简单吧?这是JS:

$("input").val(100);
$("input[value='100']").val(200)?
Run Code Online (Sandbox Code Playgroud)

结果是:脚本的第一行有效,但不是第二行.(Chrome,FF,IE9)这两行都适用于IE8.怎么会这样?顺便说一下,我正在使用jQuery1.7.2.或者你可以在http://jsfiddle.net/wzKNV/上测试上面的代码

小智 6

该属性等于选择器检查属性,但.val()只是改变了性质,所以选择没有看到更新.

querySelectorAlljQuery/Sizzle默认强制执行此"仅属性"行为的本机方法.

如果你打破选择器querySelectorAll,所以必须使用Sizzle,它将工作...

// v------made it a non-standard Sizzle selector
$(":input[value='100']").val(200);
Run Code Online (Sandbox Code Playgroud)

这是因为Sizzle选择器不一定符合qSA选择器.当然,这会稍微改变选择器的含义,但对于说明是有用的.

演示: http : //jsfiddle.net/wzKNV/3/


为了保持它使用标准选择器(这是一个好主意IMO),你可以使用filter()...

$("input").filter(function() { return this.value === '100'; })
          .val(200);
Run Code Online (Sandbox Code Playgroud)

演示: http : //jsfiddle.net/wzKNV/4/