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