我想知道哪些选择器可用于HTML5附带的这些数据属性 .
以这段HTML为例:
<ul data-group="Companies">
<li data-company="Microsoft"></li>
<li data-company="Google"></li>
<li data-company ="Facebook"></li>
</ul>
是否有选择器:
-
data-company="Microsoft"
以下"Companies"
的所有元素 -
data-company!="Microsoft"
以下"Companies"
的所有元素 -
在其他情况下,可以使用其他选择器,如"contains, less than, greater than, etc..." .
4 回答
查看jQuery Selectors:contains是一个选择器
这是关于:contains selector的信息
jQuery UI
也有:data() selector,也可以使用 . 它似乎已经出现了Version 1.7.0 .你可以像这样使用它:
Get all elements with a data-company attribute
Get all elements where data-company equals Microsoft
Get all elements where data-company does not equal Microsoft
等等...
新
:data()
选择器的一个警告是,您必须按代码设置data
值才能选择它 . 这意味着为了使上述工作,在HTML中定义data
是不够的 . 你必须先这样做:这适用于您可能以这种或类似方式使用
$(...).data("datakey", "value")
的单页面应用程序 .Pure/vanilla JS solution (工作示例here)
在querySelectorAll中,您必须使用有效的CSS selector(目前为Level3)
j3和Pure JS的 SPEED TEST (2018.06.29):测试是在Chrome 67.0.3396.99(64位),Safari 11.0.3(13604.5.6),Firefox 59.0.2(64-)上的MacOs High Sierra 10.13.3上进行的位) . 下面的屏幕截图显示了最快浏览器(Safari)的结果:
PureJS比jQuery快了大约12%在Chrome上,21%在Firefox上,25%在Safari上 . 有趣的是,Chrome的速度是每秒18.9M,Firefox 26M,Safari 160.9M(!) .
So winner is PureJS 和最快的浏览器是 Safari (比Chrome快8倍!)
在这里,您可以在您的机器上进行测试:https://jsperf.com/js-selectors-x
jsFiddle Demo
jQuery提供了几个selectors (full list),以便使您正在寻找的查询工作 . 要解决您的问题"In other cases is it possible to use other selectors like "包含,小于,大于等... "."您还可以使用包含,开头和结束来查看这些html5数据属性 . 请参阅上面的完整列表,以查看所有选项 .
上面已经介绍了基本的查询,并且使用John Hartsock的answer将是获得每个数据公司元素或获得除Microsoft(或任何其他版本的
:not
)之外的所有元素的最佳选择 .为了将其扩展到您正在寻找的其他点,我们可以使用多个元选择器 . 首先,如果要进行多个查询,最好缓存父选择 .
接下来,我们可以在这个集合中寻找以G开头的公司
或者也许包含soft这个词的公司
也可以获得数据属性结尾匹配的元素