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

Checkbox with ajax issue for select or unselect issue

本文关键字:选择 问题 取消 用于 复选框 ajax 带有      更新时间:2023-09-26

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

注意:如果在没有清除复选标记的情况下应用上述代码,则可以使用上一个复选框。

好的。当您应该使用属性时,您正在尝试使用属性。阅读http://api.jquery.com/attr/特别是题为"属性与属性"的部分。

同时,如果您更改,您的代码将起作用

$(".categorychk").each(function(){
 $(this).removeAttr("checked");
});

$(".categorychk").prop("checked", false);

(注意:你不需要.each(),它会自动对所有选定的项目进行操作)。

并更改

$(".categorychk[data-id="+value+"]").attr("checked",true);

$(".categorychk[data-id="+value+"]").prop("checked",true);

请注意使用.pr()而不是.attr()

如我如何检查取消选中复选框输入或单选按钮中所述,您需要使用jQuery道具:

$(".categorychk[data-id="+value+"]").prop('checked', true);

要按数据id过滤元素,可以使用:

$(".categorychk").filter(function() {
      return $(this).data('id') == value;
});