javascript - 单击复选框时未触发下拉列表复选框事件

标签 javascript jquery datatables

我在数据表的标题上有一个 dropdown 列表。该列表有多个 checkbox,我想在复选框被 checkedunchecked 时调用一个事件。

在调试期间,断点未击中复选框单击事件。请让我知道如何在这种情况下实现复选框 click/change 事件。

最佳答案

这是因为当您绑定(bind)该事件时,#chk_select_abst 未在 DOM 就绪时呈现。

对于动态添加的 DOM 上的绑定(bind)事件,您可以在其 parent DOM 节点上的某处binddelegate 事件,您肯定会这样做在页面加载时存在并且将永远动态删除/替换。在幕后,这利用了事件冒泡事件传播Check out this link for more info about bubbling .

一个安全的选择是使用父节点作为body。但是,您可以而且应该使用较低的父节点(在本例中为 #ul_AbandonedStates)来提高性能。

Documentation for jQuery event delegation.

var json = {
  abandonState: [{
    Name: 'name 1',
    Value: 'value 1'
  }, {
    Name: 'name 2',
    Value: 'value 2'
  }]
}

function addCheckBox() {
  if (json) {
    if (json.abandonState) {
      var abandonedStates = json.abandonState;
      var li = $('<li>');
      var select = $("<label><input id='chk_select_abst' type='checkbox' class='abandonstatecheckclass' value='-1' name='Select All' /> Select All</label>");
      var res = li.append(select);
      $('#ul_AbandonedStates').append(res);
      $.each(abandonedStates, function(index, item) {
        var li = $('<li>');
        var chk = $("<label><input id='chk_" + item.Value + "' type='checkbox' class='abandoncheckclass' value='" + item.Value + "' name='" + item.Name + "' />" + item.Name + "</label>");
        var res = li.append(chk);
        $('#ul_AbandonedStates').append(res);
      });
      var li = $('<li>');
      var btn = $('<button id="ul_AbandonedStates_ok" class="btn btn- primary btn- xs" type="button" value="OK">OK</button>');
      var res = li.append(btn);
      $('#ul_AbandonedStates').append(res);
    }
  }
}

$(document).ready(function() {
  //change here
  $("#ul_AbandonedStates").on("click", "#chk_select_abst", function() {
    $("#ul_AbandonedStates input:checkbox").prop('checked', $(this).prop('checked'));
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <th align="center" width="13%" style="position:relative;" index=6 name="abandonedState">
    Abandon State
    <div class="down-arrow-wrapper">
      <a href="#" class="down-arrow" id="da-abandonstate"></a>
      <ul class="checkbox-list" id="ul_AbandonedStates"></ul>
    </div>
    <th>
</table>

<button class="add" onclick="addCheckBox()">Add List</button>

关于javascript - 单击复选框时未触发下拉列表复选框事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48166166/

相关文章:

javascript - 我很难从计算机接收任何输出。滥用变量?或者我的 If 语句有问题?

javascript - 如何在 react 中解析xml文件?

javascript - Jquery使用prev()进行遍历

javascript - Jquery退出弹出窗口困惑

javascript - mvc 中的 AJAX 上传脚本问题

javascript - 将查询结果设置为数据表的源

javascript - 跟踪累计总数 - JavaScript

javascript - 如何让一个 div 随着窗口大小的调整而移动,而不会将其他 div 推开?

javascript - 让 DataTables 不过滤某些行

jquery - 使用 jQuery DataTables 插件,fnAddData() 是否将行添加到 html 表的顶部或底部?