Jquery 使用“后如何重新绑定click()事件”;“数据表”;搜索

Jquery 使用“后如何重新绑定click()事件”;“数据表”;搜索,jquery,Jquery,我有一个使用datatables显示的表。表中的一列是复选框。选中(或取消选中)复选框会导致Ajax事件。像这样: <script type="text/javascript"> $(document).ready(function() { $(".data-table").dataTable({}); $(".my-checkbox").click(function() { $.ajax(....) }) }) </script&

我有一个使用datatables显示的表。表中的一列是复选框。选中(或取消选中)复选框会导致Ajax事件。像这样:

<script type="text/javascript">
  $(document).ready(function() {
    $(".data-table").dataTable({});
    $(".my-checkbox").click(function() {
       $.ajax(....)
    })
  })
</script>

<table class="data-table">
  <tr>
    <td><input type="checkbox" class="my-checkbox"></td>
  </tr>

  <!-- repeat many times -->
</table>

$(文档).ready(函数(){
$(“.data table”).dataTable({});
$(“.my checkbox”)。单击(函数(){
$.ajax(…)
})
})
这在初始页面加载时非常有效,但只要我使用“搜索”框,change()方法就会与搜索找到的任何内容解除绑定


搜索完成后,是否有API钩子可用于将click()处理程序重新绑定到复选框?或者有更好的方法吗?

是的,您可以手动重新绑定或使用


是的,您可以手动重新绑定或使用


.click是.bind的快捷方式,它只绑定页面中的元素。您必须使用。live:

$('.my-checkbox').live('click', handler);
另一个选项是使用委托:

$('.data-table').delegate('.my-checkbox', 'click', handler);
更新:从jQuery 1.7+开始,
.live
.delegate
都已被弃用,并被
取代。on

$('.my-checkbox').on('click', handler);

.click是.bind的快捷方式,它只绑定页面中的元素。您必须使用。live:

$('.my-checkbox').live('click', handler);
另一个选项是使用委托:

$('.data-table').delegate('.my-checkbox', 'click', handler);
更新:从jQuery 1.7+开始,
.live
.delegate
都已被弃用,并被
取代。on

$('.my-checkbox').on('click', handler);

问题是datatable动态加载行。 重新绑定datatable的draw上的事件,首先解除所有旧事件的绑定

  <script type="text/javascript">
    $(document).ready(function() {
      var dataTable = $(".data-table").dataTable();
      // draw will be called when paging/filtering
      dataTable.on('draw', function() {
        bindEvents();
      });
      dataTable.draw();

    });
    function bindEvents() {
        // Unbind any old events first
        $(".my-checkbox").off('click');
        $(".my-checkbox").on('click', function() {
          $.ajax(....)
        });
      })
    }
  </script>

$(文档).ready(函数(){
var dataTable=$(“.data table”).dataTable();
//分页/筛选时将调用draw
dataTable.on('draw',function(){
bindEvents();
});
dataTable.draw();
});
函数bindEvents(){
//首先解除所有旧事件的绑定
$(“.my checkbox”).off('click');
$(“.my checkbox”)。在('click',function()上{
$.ajax(…)
});
})
}

问题在于datatable动态加载行。 重新绑定datatable的draw上的事件,首先解除所有旧事件的绑定

  <script type="text/javascript">
    $(document).ready(function() {
      var dataTable = $(".data-table").dataTable();
      // draw will be called when paging/filtering
      dataTable.on('draw', function() {
        bindEvents();
      });
      dataTable.draw();

    });
    function bindEvents() {
        // Unbind any old events first
        $(".my-checkbox").off('click');
        $(".my-checkbox").on('click', function() {
          $.ajax(....)
        });
      })
    }
  </script>

$(文档).ready(函数(){
var dataTable=$(“.data table”).dataTable();
//分页/筛选时将调用draw
dataTable.on('draw',function(){
bindEvents();
});
dataTable.draw();
});
函数bindEvents(){
//首先解除所有旧事件的绑定
$(“.my checkbox”).off('click');
$(“.my checkbox”)。在('click',function()上{
$.ajax(…)
});
})
}

您是否缺少一些代码?我看不到您在任何地方绑定
change
事件。是否缺少一些代码?我看不到您在任何地方绑定
change
事件。