如何在数据属性数组中选择具有特定值的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的例子