简而言之,我试图根据id获取项目的子集合。我想抓住1-1, 1-1-0, 1-1-1
而不是1-19, 1-19-0, 1-19-1
。有没有办法实现这个目标?
$(function(){
// grabs all items but only want 1-1 items.
$('[data-parent-id^=1-1]').prop('checked',true);
// does not grab the first item 1-1.
$('[data-parent-id^=1-2-]').prop('checked',true);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<div>
<input type="checkbox" data-parent-id="1-1">
<input type="checkbox" data-parent-id="1-1-0">
<input type="checkbox" data-parent-id="1-1-1">
<input type="checkbox" data-parent-id="1-19">
<input type="checkbox" data-parent-id="1-19-0">
<input type="checkbox" data-parent-id="1-19-1">
</div>
<div>
<input type="checkbox" data-parent-id="1-2">
<input type="checkbox" data-parent-id="1-2-0">
<input type="checkbox" data-parent-id="1-2-1">
<input type="checkbox" data-parent-id="1-29">
<input type="checkbox" data-parent-id="1-29-0">
<input type="checkbox" data-parent-id="1-29-1">
</div>
答案 0 :(得分:3)
如果我正确理解你的问题,这将解决问题:
$('[data-parent-id="1-1"], [data-parent-id^="1-1-"]').prop('checked',true);
说明:选择器的第一部分完全得到1-1
,第二部分得到以1-1-
开头的任何内容。
答案 1 :(得分:1)
我认为穆斯曼的解决方案是最简单的。您还可以使用正则表达式并以更高的精度过滤元素:http://jsfiddle.net/6hfryod2/。
$(function(){
$("div > input[type='checkbox']").filter(function(index) {
return /^(1-1)$|^(1-1-)/gi.test($(this).attr("data-parent-id"));
}).prop("checked", true);
});
答案 2 :(得分:-1)
以下是使用:not
选择器的一种方法:
$('[data-parent-id^=1-1]:not([data-parent-id^=1-19])').prop('checked',true);
其中:
[data-parent-id^=1-1]
匹配以1-1
开头的所有属性:
1-1
1-1-0
1-1-1
1-19
1-19-0
1-19-1
:not([data-parent-id^=1-19])
排除以1-19
开头的所有属性:
1-19
1-19-0
1-19-1