jQuery在使用HTML5的自定义数据属性时的选择器
jQuery在使用HTML5的自定义数据属性时的选择器
我想知道HTML5提供哪些选择器用于这些数据属性。
以这段HTML为例:
是否有选择器来获取以下内容:
- 所有带有
data-company=\"Microsoft\"
属性的元素,在\"Companies\"
下面 - 所有带有
data-company!=\"Microsoft\"
属性的元素,在\"Companies\"
下面 - 在其他情况下,是否可以使用其他选择器,如\"contains, less than, greater than, etc...\"。
admin 更改状态以发布 2023年5月22日
jQuery UI
拥有一个:data()
选择器,可以使用它来选择元素。这个选择器似乎已存在于版本1.7.0以来。
你可以像这样使用它:
获取所有具有 data-company
属性的元素
var companyElements = $("ul:data(group) li:data(company)");
获取所有 data-company
等于 Microsoft
的元素
var microsoft = $("ul:data(group) li:data(company)") .filter(function () { return $(this).data("company") == "Microsoft"; });
获取所有 data-company
不等于 Microsoft
的元素
var notMicrosoft = $("ul:data(group) li:data(company)") .filter(function () { return $(this).data("company") != "Microsoft"; });
等等...
新的 :data()
选择器的一个注意点是,你必须通过代码设置 data
值才能被选择。这意味着仅在HTML中定义 data
是不够的。你必须先这样做:
$("li").first().data("company", "Microsoft");
这对于单页面应用程序来说很好,因为你可能会在这种或类似方式中使用 $(...).data("datakey", "value")
。
$("ul[data-group='Companies'] li[data-company='Microsoft']") //Get all elements with data-company="Microsoft" below "Companies" $("ul[data-group='Companies'] li:not([data-company='Microsoft'])") //get all elements with data-company!="Microsoft" below "Companies"
查看 jQuery 选择器 :contains 是一种选择器
这里有关于 :contains 选择器 的信息