带有ajax问题的复选框,用于选择或取消选择问题

时间:2016-07-25 12:32:13

标签: javascript jquery ajax checkbox

我的格式为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");
});
  

注意:如果应用上面的代码而没有明确的选中标记,则使用上一个选中的复选框正常工作。

2 个答案:

答案 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()