查找包含特定数据属性的元素

pun*_*ish 9 html javascript jquery

我有一个这样的清单

<ul id="a">
<li data-id="i1" data-pk-type="foo bar">sdfsf</li>
<li data-id="i2" data-pk-type="foo">sdfs</li>
<li data-id="i3" data-pk-type="bar baz">sfdsf</li>
<li data-id="i4" data-pk-type="qux foo">sfds</li>
<li data-id="i5" data-pk-type="baz">sdff</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我想找到包含给定的所有元素data-pk-type.我正在尝试以下不成功的代码,因为.data("pkType", "foo")实际上将data属性设置为foo;

var $links = $("#a").find("li").data("pkType", "foo");
Run Code Online (Sandbox Code Playgroud)

我可以做点什么

var $links = $("#a").find("li", "[data-pk-type='foo']");
Run Code Online (Sandbox Code Playgroud)

然而,这不会有效...我想要任何可能包含的元素foo.建议?

dkn*_*ack 13

描述

你应该使用jQuerys Attribute Contains Selector [name*="value"].

Attribute包含Selector [name*="value"]:选择具有指定属性的元素,其值包含给定的子字符串

查看示例和jSFiddle演示

样品

$links = $("li[data-pk-type*='foo']");
alert($links.length);
Run Code Online (Sandbox Code Playgroud)

会给你一个3,所以找到3个元素.

更多信息


Dip*_*Raj 5

请尝试基于此文档 http://api.jquery.com/attribute-contains-word-selector/

它会像

var $links = $('li[data-pk-type~="foo"]',$("#a"));
Run Code Online (Sandbox Code Playgroud)