鉴于此HTML:
<p htmlfor="afield">This field is required.</p>
这个jQuery选择器会找到p标签:
var filtered = $("*").filter("[for='afield']");
虽然这个不会:
$("p").filter("[for='afield']");
为什么第一个匹配? HTML中的属性是“htmlfor”,而选择器中的属性是“for”。
而且,为什么第二个不匹配?
这是一个小提琴(有警报,对不起......)。
从评论中编辑解释我关心的原因:
我正在使用jquery-validate插件。 [for='afield']
是插件代码使用的语法,也是生成HTML的插件。我只是想了解发生了什么,以便我可以修复我网站上的错误。
答案 0 :(得分:1)
将jQuery validate升级到1.9.0以查看它是否解决了问题。您可以通过Microsoft的CDN实时链接它:http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js
编辑:
似乎升级jQuery和jQuery.validate解决了“它不工作”而不是“为什么”。试图回答“为什么”:
http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-213157251似乎暗示这些属性是异常,因此以尴尬的方式重命名。也许这是jQuery的另一个很好的例子,它抽象出令人烦恼的浏览器异常,因此我们可以完成工作。