zTree双击的时候怎么屏蔽单击动作?

发布于 2021-11-16 18:39:26 字数 781 浏览 826 评论 4

因为双击时候会触发两次单击事件,当然,这不是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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

猫九 2021-11-23 04:59:05

完全没有兼容问题,普通的定时方案

多情癖 2021-11-22 22:49:32

var intervalTimer = null;

     

    function do_click(event) {

        clearTimeout(intervalTimer); //取消上次延时未执行的方法

     

        intervalTimer = setTimeout(function() {

            // click 事件的处理

        }, 500);

    }

     

    function do_dblclick(event) {

        clearTimeout(intervalTimer);

        // dblclick 事件的处理

    }

醉生梦死 2021-11-22 09:47:46

很抱歉,这种需求还是比较特殊的,并不广泛,而且还会牵扯到 beforeClick 的处理机制。 应该说只能根据特殊情况来修正了。

直接在 onClick里面处理是会觉得有点儿别扭,但我下一步会对 zTree 的代码做一些结构性的分析,同时告诉大家如何快速制作 zTree 的插件以及用插件的方式制作自己的 zTree 功能模板的。所以你这种情况,可能更适于去做一个 zTree 的扩展,与核心代码放在一起,方便项目调用

坏尐絯 2021-11-20 13:39:14

已经解决:

onClick: function(e, treeId, node, clickFlag) {
						
    // 用于解决双击时候会调用两次单击事件的问题
    if (node.clickTimeout) {
        clearTimeout(node.clickTimeout);
        node.clickTimeout = null;
    } else {
        node.clickTimeout = setTimeout(function() {
            triggerNodeClick(treeId, node);
            
            node.clickTimeout = null;
        }, 250);
    }
}
 function triggerNodeClick(treeId, node) {
		   $('body').trigger('treeNodeClick', [treeId, node]);
	   }
	   
	   $('body').bind('treeNodeClick', function(e, treeId, node) {
		console.log(treeId);
			console.log(node);
	   });

虽然觉得解决办法不是很美好,如果zTree内置这个功能就好了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文