zTree双击的时候怎么屏蔽单击动作?
因为双击时候会触发两次单击事件,当然,这不是bug,只是我想双击只用来展开合拢子节点。
以前用ext的时候是用setTimeout来处理的,不过我不知道怎么在ztree的一个callback里面调用其他的事件。
下面贴一下我在ext里面用到的代码:
onItemClick: function(view, node, item, index, e, options) { // 用于解决双击时候会调用两次单击事件的问题 if (this.clickTimeout) { clearTimeout(this.clickTimeout); this.onItemDbClick(view, node, item, index, e, options); this.clickTimeout = null; } else { this.clickTimeout = Ext.Function.defer(function() { this.fireEvent("cmscategoryclick", view, node, item, index, e, options); this.clickTimeout = null; }, 250, this); } },
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
完全没有兼容问题,普通的定时方案
var intervalTimer = null;
function do_click(event) {
clearTimeout(intervalTimer); //取消上次延时未执行的方法
intervalTimer = setTimeout(function() {
// click 事件的处理
}, 500);
}
function do_dblclick(event) {
clearTimeout(intervalTimer);
// dblclick 事件的处理
}
很抱歉,这种需求还是比较特殊的,并不广泛,而且还会牵扯到 beforeClick 的处理机制。 应该说只能根据特殊情况来修正了。
直接在 onClick里面处理是会觉得有点儿别扭,但我下一步会对 zTree 的代码做一些结构性的分析,同时告诉大家如何快速制作 zTree 的插件以及用插件的方式制作自己的 zTree 功能模板的。所以你这种情况,可能更适于去做一个 zTree 的扩展,与核心代码放在一起,方便项目调用
已经解决:
虽然觉得解决办法不是很美好,如果zTree内置这个功能就好了。