javascript - 选择网格中的多个复选框
问题描述
我在dojo中有这个示例数据。当网格加载时,有 2 个按钮View
和edit
。当我单击view
网格中的复选框时,只能选择一个节点(工作)。但是edit
当我点击按钮时,我可以选择多个复选框。似乎该功能onClick
仍在运行,如何阻止它?
function onClick(e) {
var grid = $("#grid").data("kendoGrid");
var row = $(e.target).closest("tr");
if(row.hasClass("k-state-selected")){
setTimeout(function(e) {
var grid = $("#grid").data("kendoGrid");
grid.clearSelection();
})
} else {
grid.clearSelection();
};
};
$(document).ready(function() {
$("#grid").kendoGrid({
//.........grid load code
});
});
$("#view").kendoButton();
var button = $("#view").data("kendoButton");
button.bind("click", function(e) {
$('#grid').data('kendoGrid').dataSource.read();
var grid = $("#grid").data("kendoGrid");
grid.tbody.on("click", ".k-checkbox", onClick);
});
$("#edit").kendoButton();
var button = $("#edit").data("kendoButton");
button.bind("click", function(e) {
$('#grid').data('kendoGrid').dataSource.read();
});
<div id="grid"></div>
<button id="view" class="k-button k-primary" value="view">View</button>
<button id="edit" class="k-button k-primary" value="edit">Edit</button>
解决方案
您的问题在于单击时您unbind
没有onClick
回调view
。当您将函数绑定到事件侦听器时,它将继续侦听,除非您通过unbind
-ing 删除该侦听器。
尝试这个:
$("#edit").kendoButton();
var button = $("#edit").data("kendoButton");
button.bind("click", function(e) {
// Unbind view event listener
var grid = $("#grid").data("kendoGrid");
grid.tbody.unbind("click", onClick);
$('#grid').data('kendoGrid').dataSource.read();
});
旁注,您应该button
分别重命名变量以减少遇到错误的可能性。
推荐阅读
- python - 如何在 Python 中制作 A - 1 = Z?
- ios - Cordova 闪屏插件 - 升级到 iOS 14 后,在闪屏出现之前快速显示黑屏
- javascript - VSCode 中的制表符转义引号
- r - 根据条件创建新变量并与现有变量匹配
- c - 如何在一个程序中使用多个分叉
- php - 为什么我在后续下载特定文件时在 React Native 中收到 HTTP 412 状态错误?
- django - 模型?与其他模型的特定领域相关的领域?
- unity3d - 我无法统一拖动文本ui
- django - 在 django 中请求调用 Post 的问题
- python-3.x - 键值更改时重新启动循环