使用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将自动解析为数组,然后使用数组方法