如何在数据属性数组中选择具有特定值的jQuery元素

有没有办法在jQuery中选择在数据属性数组中具有特定值的元素?

考虑一下这段html:

  • Person name 1
  • Person name 2
  • 在jQuery中选择数据城市属性中所有“纽约”的人的最佳方法是什么?

    解决方案应该考虑到某些城市名​​称出现在其他城市名称中(例如2:伦敦,新伦敦)

    例2:

     
  • Person name 1
  • Person name 2
  • 在jQuery中选择数据城市属性中所有“伦敦”的人的最佳方法是什么? 不应选择带有“新伦敦”的城市。

    您可以使用selector tag[attr*=string] ,其中*=匹配标签值中任何位置的字符串。 我把文字涂上了红色,这样就可以测试……

     $("li[data-city*=New York]").css({color:'red'}); 

    或者通过更复杂的方法来满足示例二的需求:

     $("li") .filter( function(){ return $(this).attr('data-city').match(/(^|,\s+)London(,|$)/) }) .css({color:'red'}); 

    此方法使用filter遍历所选li的列表,并匹配所有元素与属性data-city匹配正则表达式(^|,\s+)London(,|$) ,这意味着……

    • 开头或逗号( ^|,
    • 和一个或多个空格( \s+
    • 其次是London
    • 后跟逗号或结尾( ,|$

    我用过这个HTML:

     
  • Person name 1
  • Person name 2
  • Person name 3
  • 尝试类似的东西:

     $('li[data-city*="New York"]') 

    Attribute Contains Selector [docs]

    jsfiddle的例子