使用jQuery通过自定义数据属性的子字符串选中复选框

使用jQuery通过自定义数据属性的子字符串选中复选框,jquery,selector,custom-data-attribute,Jquery,Selector,Custom Data Attribute,如何选择包含数字范围内的数字的复选框数据属性中的数字不重复。假设我有两个复选框: <input type="checkbox" name="A" data-numbers="1,3,2" /> <input type="checkbox" name="B" data-numbers="34,21,11,39,8,6,33" /> 我想按数字3选择复选框 因为数字3是第一个复选框数据编号中的第二个数字,所以它应该匹配并选择第一个复选框。您可以筛选jQuery对象 var

如何选择包含数字范围内的数字的复选框数据属性中的数字不重复。假设我有两个复选框:

<input type="checkbox" name="A" data-numbers="1,3,2" />
<input type="checkbox" name="B" data-numbers="34,21,11,39,8,6,33" />
我想按数字3选择复选框


因为数字3是第一个复选框数据编号中的第二个数字,所以它应该匹配并选择第一个复选框。

您可以筛选jQuery对象

var num = "3";
var elem = $('[date-numbers]').filter(function(){
   return $(this).data("numbers").split(",").indexOf(num) > -1;
});

您所做的是基于拆分进行筛选,然后检查其中是否存在num。

使用“数据编号”循环所有输入,如果找到要定位的值的索引,则设置attr checked

$("input[data-numbers]").each(function() {
    $(this).attr("checked", $(this).attr('data-numbers').indexOf(",3,") > -1);
});

这个答案使用了与@AmitJoki相同的技术,但是如果您愿意接受建议,可以将一些处理转移到标记中。通过将1,3,2更改为[1,3,2]…,代码变为:

var num = 3;
$(':checkbox').filter(function() {
    return $(this).data('numbers').indexOf( num ) > -1;
})
.prop('checked', true); //or whatever other processing you'd like to perform
$function{ //不需要..仅用于演示目的 $':复选框.afterfunction{ 返回$,{text:$this.data'numbers}; }; var-num=3; $':复选框.filterfunction{ 返回$this.data'numbers'.indexOf num>-1; } .prop'checked',true;//或您希望执行的任何其他处理 };
由于某些原因,它使我无法读取未定义的属性“split”。但当我控制台.log$this.data'numbers'时,它会显示这些数字。更改为数组格式data numbers=[1,2,3],jQuery.data将自动解析为数组,然后使用数组方法