自定义数据属性上的jQueryselect器使用HTML5

我想知道哪些select器可用于HTML5随附的这些数据属性。

以这段HTML为例:

<ul data-group="Companies"> <li data-company="Microsoft"></li> <li data-company="Google"></li> <li data-company ="Facebook"></li> </ul> 

有没有select器得到:

  • "Companies"下面的data-company="Microsoft"所有元素
  • 所有元素与data-company!="Microsoft"下面的"Companies"
  • 在其他情况下,是否可以使用其他select器,如“包含,小于,大于等…”。
 $("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" 

查看jQueryselect器 :contains是一个select器

这里是包含select器的信息

jQuery UI有一个:data()select器 ,也可以使用。 从版本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()select器是你必须通过代码设置data值来select它。 这意味着为了上面的工作,用HTML定义data是不够的。 你必须先做到这一点:

 $("li").first().data("company", "Microsoft"); 

对于可能以这种或类似的方式使用$(...).data("datakey", "value")单页应用程序来说,这是很好的。

jsFiddle Demo

jQuery提供了几个select器(完整列表) ,以使您正在查找的查询工作。 为了解决您的问题“在其他情况下是否可以使用其他select器,如”包含,小于,大于等“。 你也可以使用contains,begin和ends来查看这些html5数据属性。 请参阅上面的完整列表以查看所有选项。

上面已经介绍了基本的查询,使用John Hartsock的答案将是获取每个数据公司元素或者除了微软以外的每一个元素(或者任何其他版本:not )的最佳select。

为了扩展到你正在寻找的其他点,我们可以使用几个元select器。 首先,如果您要执行多个查询,那么caching父级select是很好的。

 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>