假设我有这段HTML:
<div id="container"> <ul> <li><a href="#" data-some-info="foo">Bar</a> <!-- repeating a few like the one --> --> <!-- above for a while ... --> </uL> </div>
并且我希望在定义时使用数据some-info将所有锚元素应用于所有锚元素.
我只想了解为什么会出现这种行为(这是一个错误吗?)
$("#container").find("a:data(some-info)").size(); // -> 0 $("#container").find("a").data("some-info"); // -> "foo" $("#container").find("a:data(some-info)").size(); // -> 1 (actual expected val)
有任何想法吗?
更多信息:我正在使用jQuery 1.9.0和jQuery UI 1.9.2
**编辑**
我知道$(“#container”).find(“a [data-some-info]”).这不是我在这里提出的问题.如果有一个data selector,它为什么会这样?
解决方法
:数据选择器不是JQuery核心的一部分.这可能是一个错误,但是JQuery文档说HTML5数据属性被拉入内部JQuery数据对象(可能是在调用.data时),而不是作为:data伪选择器的一部分提供(根据JQuery) UI文档按原样查询内部数据表示,并且没有说明HTML5数据属性)
替代方法:
使用$(“#container”).find(“a [data-some-info =’foo’]”),或者如果在数据属性上设置了任何内容,则返回.find(“a [data-some-info] “).