javascript - 如何更正复选框并显示是否已选中

标签 javascript jquery checkbox onclick dynamically-generated

我使用此代码在单击 1 个或多个复选框时显示一些文本 (Checked)。 我使用 on 因为复选框是动态创建的。

看来只有IE Edge还不能处理。我必须在复选框上单击两次才能显示 Checked 文本。在所有其他浏览器中,它可以立即运行。 实在不知道代码出了什么问题

<input type="checkbox" class="rafcheckbox" value="1" />
<input type="checkbox" class="rafcheckbox" value="2" />
<input type="checkbox" class="rafcheckbox" value="3" />

<div class="cb-buttons" style="display:none">Checked</div>

<script>

$(document).on('click','.rafcheckbox',function() {  
  var $checkboxes = $('.rafcheckbox').change(function() {

    var anyChecked = $checkboxes.filter(':checked').length != 0;
    $(".cb-buttons").toggle(anyChecked);
  });
});

</script>

fiddle :https://jsfiddle.net/g5tp4kjm/

最佳答案

  • 由于您已经拥有元素的委托(delegate),只需将其更改为更改事件处理程序即可。
  • 在该逻辑内,切换 hide 类,但如果未检查任何元素,则强制其具有 hide 类。

$(document).on('change','.rafcheckbox',function() {
  $('.cb-buttons').toggleClass('hide', $('.rafcheckbox:checked').length < 1);
});
.hide { display: none; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" class="rafcheckbox" value="1" />
<input type="checkbox" class="rafcheckbox" value="2" />
<input type="checkbox" class="rafcheckbox" value="3" />

<div class="cb-buttons hide">Checked</div>

关于javascript - 如何更正复选框并显示是否已选中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54814146/

相关文章:

javascript - jQuery 不捕获某些按键组合(例如,ZXW)

javascript - 使用 Javascript 创建父类(super class)(继承)

javascript - "If"与 JavaScript 中的 "and"

python - Bottlepy/Flask - 如何设置复选框?

php - 从多个复选框发布php mysql

javascript - Kendo UI 网格未提取本地数据

javascript - knockout js jquery 范围 slider && 2 输入

javascript - 在同一个容器中同时保留边框和调整两个或多个 DIV 的大小

javascript - 使用 jQuery Javascript 解析 SRT 文件

asp.net - 动态添加的复选框的 CheckedChanged EventHandler 未在 Repeater 的 UpdatePanel 内触发