使用HTML5自定义数据属性的jQuery选择器
我想知道哪些选择器可用于HTML5附带的这些数据属性。
以这段HTML为例:
<ul data-group="Companies">
<li data-company="Microsoft"></li>
<li data-company="Google"></li>
<li data-company ="Facebook"></li>
</ul>
有选择器可以得到:
"Companies"
下面的所有data-company="Microsoft"
"Companies"
data-company!="Microsoft"
元素data-company!="Microsoft"
下的"Companies"
$("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是一个选择器
这里是关于:包含选择器的信息
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")
单页应用程序,这是很好的。
jsFiddle Demo
jQuery提供了几个选择器(完整列表),以便使您正在查找的查询工作。 解决您的问题“在其他情况下,可以使用其他选择器,如”包含,小于,大于等等“。” 你也可以使用contains,begin和ends来查看这些html5数据属性。 查看上面的完整列表以查看所有选项。
上面已经介绍了基本查询,使用John Hartsock的答案将是获取每个数据公司元素或者获得除微软(或任何其他版本:not
)之外的最佳选择。
为了将其扩展到您正在寻找的其他点,我们可以使用几个元选择器。 首先,如果您要执行多个查询,那么缓存父级选择是非常好的。
var group = $('ul[data-group="Companies"]');
接下来,我们可以寻找以G开头的公司
var google = $('[data-company^="G"]',group);//google
或者也许包含单词软的公司
var microsoft = $('[data-company*="soft"]',group);//microsoft
也可以获取数据属性结尾匹配的元素
var facebook = $('[data-company$="book"]',group);//facebook
//stored selector
var group = $('ul[data-group="Companies"]');
//data-company starts with G
var google = $('[data-company^="G"]',group).css('color','green');
//data-company contains soft
var microsoft = $('[data-company*="soft"]',group).css('color','blue');
//data-company ends with book
var facebook = $('[data-company$="book"]',group).css('color','pink');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul data-group="Companies">
<li data-company="Microsoft">Microsoft</li>
<li data-company="Google">Google</li>
<li data-company ="Facebook">Facebook</li>
</ul>
链接地址: http://www.djcxy.com/p/10129.html
上一篇: jQuery selectors on custom data attributes using HTML5
下一篇: Behaviour of increment and decrement operators in Python