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个元素.
请尝试基于此文档 http://api.jquery.com/attribute-contains-word-selector/
它会像
var $links = $('li[data-pk-type~="foo"]',$("#a"));
Run Code Online (Sandbox Code Playgroud)