combotree允许多选的时候onSelect事件会重复触发onCheck事件

分享个combotree允许多选的时候onSelect事件(通常是点击“+”号时)会重复触发onCheck事件的蠢解决办法是:

1.弄一个全局变量:

var loading = false; //表示在触发combotree各种事件时是否遍历树;

2.设置onSelect时不做任何操作:

$("input[name=‘XXXXX‘]").combotree({
      。。。
      onSelect: function(node) {
             return;
      },
      。。。
});

3.设置onBeforeLoad时loading为true:

$("input[name=‘XXXXX‘]").combotree({
      。。。
      onBeforeLoad: function(row) {
             loading = true;
             。。。
      },
      。。。
});

4.设置onLoadSuccess时loading为false:

$("input[name=‘XXXXX‘]").combotree({
      。。。
      onLoadSuccess: function (row, data) {
             loading = false;
             。。。
      },
      。。。
});

5.onCheck时判断如果为true,表示代码试图遍历树,则不执行对所勾选数据的处理;

$("input[name=‘XXXXX‘]").combotree({
      。。。
      onCheck: function (data, checked) {
             if (loading) {
                  return;
             }
             if (checked == true) {}
             。。。
      },
      。。。
});

大家如果还有其他更好解决办法,欢迎提供。。

时间: 2024-11-07 22:42:08

combotree允许多选的时候onSelect事件会重复触发onCheck事件的相关文章

UWP忽略短时间内重复触发的事件

原文:UWP忽略短时间内重复触发的事件 原链接:UWP忽略短时间内重复触发的事件 - 超威蓝火 做移动端开发的可能都会遇到这种需求,当用户点击一个按钮之后,由于没有异步,或者设备性能很差等等原因,程序卡住了.但是用户不知道是咋回事啊,就开始狂点按钮,结果请求很多次资源,或者构造了很多重复视图.安卓上有很多介绍如何忽略重复点击的情况,uwp里我好像还没找到,那接下来就说一说我的方法吧. 首先是官方最常用的,从Windows诞生之初用到现在的,点击按钮之后把他Disable掉,等完成了在Enable

JQuery如何实现双击事件时不触发单击事件

单击和双击事件的执行顺序: 单击(click):mousedown,mouseout,click: 双击(dblclick):mousedown,mouseout,click , mousedown,mouseout,click,dblclick: 在双击事件(dblclick),触发的两次单击事件(click)中,第一次的单击事件(click)会被屏蔽掉,但第二次不会.也就是说双击事件(dblclick)会返回一次单击事件(click)结果和一次双击事件(dblclick) 结果.而不是一次双

JQuery如何实现双击事件时不触发单击事件,解决鼠标单双击冲突问题

在jQuery的事件绑定中,如果元素同时绑定了单击事件(click)和双击事件(dblclick),那么执行单击事件(click)时,不会触发双击事件(dblclick), 执行双击事件(dblclick)时却会触发两次单击事件(click). 但有时候我们希望在执行双击事件的时候不去出发单击事件,那究竟该如何实现呢? 少bb 上代码 : <!DOCTYPE html> <html lang="en"> <head> <meta charset

easyui 复选框 onClickRow事件与onSelect事件与onCheck事件

在项目中一直存在一个问题,一直都没发现问题的根源在哪里.在我们测试这边也是偶尔会出现.但是每次我去测试的时候也没问题.今天终于找到原因了! 在easyui中点击行和点击复选框触发的事件是不一样的! 点击行触发的事件 项目中部分代码:: onClickRow:function(index, row){ hospnewId=row.id; hosName=row.name; } 当我点击复选框的时候就不会触发这个事件,所以就得不到我想要的值. 看了一下easyui的api,发现有两个事件(可以满足我

点击事件内嵌点击事件造成多次绑定

如果一个点击事件内部有另外一个点击事件,如下 $(function(){ $("#btn1").click(function() { console.log("outside"); $("#btn2").click(function() { console.log("inside"); }); }); }); 这样,在每次点击外部的点击事件后,内部的点击事件就会多次绑定,造成事件的重复触发,这是容易出错的一点. 如果必须要写成

Dynamics CRM Form表单中通过javascript抓取触发change事件字段的属性名

通过以下这段代码能够抓取到change的事件源,从而推断出是哪个属性字段触发的事件, function change(pContext) {var fieldName=pContext.getEventSource().getName(); } 在字段的事件设置中须要将下框中复选框的勾勾上.很多其它的信息可參见SDK.

JavaScript 事件托付 以及jQuery对事件托付的支持

在我的另外一篇文章 解析Javascript事件冒泡机制里的最后,从冒泡机制的角度谈了一点对Javascript 事件托付的理解.如今单独把事件托付 拿出来和大家探讨一下. 什么是托付? 所谓的托付,现实意义上讲是指将自己的事务嘱托他人代为处理.比方说甲托付乙去做某些事儿,那么,甲则是托付人,乙是被托付人. 真正做事情的是乙,即被托付人,而托付人甲 则是把对应的信息传递给被托付人乙.自己本该做的事情交给了乙来做.例如以下图这个样例: 那么在我们javascript 里,什么是事件托付呢? 事件托

RadioButtonList根据值触发OnSelectedIndexChanged事件

Insus.NET有使用Iframe来处理另外一个站点的enter form,由于需要自动循环填入数据,免去人手操作.但是原来的Enter from有RadioButtonList控件以及OnSelectedIndexChanged关联另外一个DropDownList控件.这样的话,问题来了,怎样根据与指定RadioButtonList的值之后,并触发其OnSelectedIndexChanged事件? 先来看看原aspx的代码: <asp:radiobuttonlist id=rdblstLo

iScroll中事件点击触发两次解决方案

之前也看了很多朋友的文章里有讲这个问题.比如使用一个变量记录执行的间隔时间什么的.感觉每次都要去撸一下,比较累人.本人喜欢搬砖前先选工具.其实解决这个方法很简单.iScroll呢其实是截获了点击浏览器时的touchstart和touchend事件.在touchend的时候使用js去触发元素的onclick事件(_end这个函数).而在实际操作中,先执行了touchend,然后再执行了一次onclick的相关函数.这样就形成了头疼的一次点击两次触发.这本来就一个不是问题的问题.之所以说这是个问题,