我甚至不知道从哪里开始。我正在使用Kendo Grid列出来自服务器的数据。第一次加载时一切都很好,包括我在dataBound函数中添加其他函数和dom元素时。调用服务器似乎更新(同步)网格就好了。但是,似乎dataBound函数在第二轮被称为额外的时间。执行在dataBound中编码的on click函数总共执行4次。我如何测试问题的位置以及我需要销毁什么来阻止这种令人愤怒的行为?
我甚至不知道在整个网站上粘贴的代码是什么。这种行为背后的基础理论是什么,因为显然我从根本上忽略了javascript和Kondo的工作方式?请问我该怎么测试呢。谢谢!
答案 0 :(得分:0)
快速解决方案可能是在数据绑定中使用 off() 然后on(),例如
$(".cell").off("click").on("click", function(e){ ... });
这将删除以前附加的处理程序,并确保您只有一个。
更好的是,在网格生成代码之外使用 event delegation 。
$(document).on("click", ".cell", function(e) { ... });
使用事件委派,在设置事件处理程序时不必存在事件的目标。在上面的示例中,单击位于已存在的文档对象上,但只有在实际单击具有“单元”类的元素时才会触发处理程序。您甚至可以在创建网格之前在document.ready中定义此处理程序一次。