我的格式为html的复选框代码
<label class="checkbox-inline">
<input type="checkbox" name="category[]" value="1" data-id="1" class="categorychk" checked="checked">Men
</label>
<label class="checkbox-inline">
<input type="checkbox" name="category[]" value="2" data-id="2" class="categorychk" checked="checked">Women
</label>
关于ajax成功响应我按照jquery代码执行它会正常工作。
$.each(data, function(index,value) {
$(".categorychk[data-id="+value+"]").attr("checked",true);
});
但问题是在通话之前我清除所有选中的标记,然后应用上面的代码。但它不起作用。
当我在ajax调用
之后添加以下代码时$(".categorychk").each(function(){
$(this).removeAttr("checked");
});
注意:如果应用上面的代码而没有明确的选中标记,则使用上一个选中的复选框正常工作。
答案 0 :(得分:1)
如how do i check uncheck a checkbox input or radio button中所述,您需要使用jQuery prop:
$(".categorychk[data-id="+value+"]").prop('checked', true);
要按data-id过滤元素,您可以使用:
$(".categorychk").filter(function() {
return $(this).data('id') == value;
});
答案 1 :(得分:1)
确定。当你应该使用属性时,你正在尝试使用属性。阅读http://api.jquery.com/attr/,特别是标题为“属性与属性”的部分。
与此同时,如果您更改
,您的代码将有效$(".categorychk").each(function(){
$(this).removeAttr("checked");
});
到
$(".categorychk").prop("checked", false);
(N.B。你不需要.each()这个,它会自动对所有选定的项目进行操作)。
并更改
$(".categorychk[data-id="+value+"]").attr("checked",true);
到
$(".categorychk[data-id="+value+"]").prop("checked",true);
请注意使用.prop()而不是.attr()