【问题标题】:Checkbox with ajax issue for select or unselect issue [duplicate]带有 ajax 问题的复选框,用于选择或取消选择问题 [重复]
【发布时间】:2016-11-28 19:18:43
【问题描述】:

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

注意:如果应用上面的代码没有明确的选中标记,那么使用之前选中的复选框可以正常工作。

【问题讨论】:

  • 投反对票的人请评论投反对票。如果您不明白我的问题,请让我问。
  • 投反对票的不是我……但我也不完全清楚。哪个位不起作用,“.each”循环或“清除所有选中标记”代码(您没有显示)?
  • 使用.prop 操作属性
  • $(".categorychk[data-id="+value+"]").attr("checked",true); 应该是$(".categorychk[data-id="+value+"]").prop("checked",true);
  • @ADyson 当我添加removeAttr 代码时,上述代码不起作用。

标签: javascript jquery ajax checkbox


【解决方案1】:

好的。当您应该使用属性时,您正在尝试使用属性进行操作。阅读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);

注意使用 .prop() 而不是 .attr()

【讨论】:

  • 谢谢@ADyson 我用.prop 解决了我的问题。
【解决方案2】:

how do i check uncheck a checkbox input or radio button 中所述,您需要使用 jQuery 属性:

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

您可以使用按数据 ID 过滤元素:

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

【讨论】:

  • 这段代码工作正常但是当我把removeAttr代码放在这行之前,它就不起作用了。
  • 谢谢@gaetanoM 我用.prop 解决了
猜你喜欢
  • 1970-01-01
  • 2020-09-27
  • 1970-01-01
  • 2018-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-02
相关资源
最近更新 更多