Jquery EasyUI中treegrid的中右键菜单和一般按钮同时绑定事件时的怪异事件

InChatter系统开源聊天模块前奏曲

 

最近在研究WCF,又因为工作中的项目需要,要为现有的系统增加一个聊天模块以及系统消息提醒等,因此就使用WCF做服务器端开发了一个简单的系统。

开发最初学习了东邪孤独大哥的《传说的WCF系列》,文章写的很好,有兴趣的朋友也可以参考写,文章深入浅出,非常不错,坚持看完,相信在WCF方面可以入个门了,而且听说孤独大哥也来到的博客园呢~

上面绝非广告,完全是真心的感谢,没有孤独大哥的文章,开发之初可能真的不会像现在这么顺利,现在软件的聊天模块已经可以正常运行和交流了。

所以呢,我也想趁着这次机会:

  1. 把自己学习到的知识,总结一下拿出来跟大家分享下
  2. 就一步完善自己的聊天模块,希望能够做成一个开源的通用模块

一直都想把自己所学习到的知识跟大家分享,只是我这个人文笔确实不怎么样,而且还比较懒,更不想把自己的时间全部放在电脑面前,每次洗头都会看着掉发一把一把的,不过谁让我们喜欢这一行,更发自内心的喜欢呢,所以坚持是我们唯一的选择了。

从今往后,我会不断的督促自己,把学习到的知识经验跟大家一起分享,一起进步。

首先呢,我将把自己设计以及开发WCF开源聊天模块的过程以及过程中所涉及到的知识都写出来,希望大家与我一起见证这个开源项目的成大和壮大,同时我也在考虑为这个项目寻找Java、Andirod等语言方面的朋友,一起开发完成,但目前由于刚刚开始,很多地方都不太完备,大家也看不到任何东西呢,所以这个就推迟。我将首先开发WCF+WPF版本的模块。期待这个模块能够尽快跟大家见面。

这篇文章也算是开篇小记吧,乱七八糟的一大推,希望不会让各位觉得时间浪费了。

每天的一小步,成就人生的一大步,相信坚持的力量,愿与大家共成长
 

做个项目使用jquery  easyui来做前端,也许是对此不是很熟悉,总是发现一些不可理解的事件。

主要源代码如下:

 
<script type="text/javascript">
$(function(){
var access_editingId; //当前正在编辑的
var access_lastChildName;
var access_addclick=0; //点击了添加
$('#access_tg').treegrid({
//右键
onContextMenu:function(e,row){
e.preventDefault(); //该方法将通知 Web 浏览器不要执行与事件关联的默认动作(如果存在这样的动作)
$('#access_tg').treegrid('select',row.id);
$('#access_menu').menu('show',{
left: e.pageX,
top: e.pageY
});
}
});
$("#access_lb_new,#access_menu_new").click(function(){
access_new();
});
function access_new(){
var tt=$('#access_tg');
var row = tt.treegrid('getSelected'); //获取选中的标签项
tt.treegrid('reload',row.id); //reload为异步操作,如果直接读取子节点会无内容
}
});
</script>
<div class="container">
<div id="access_menu" class="easyui-menu" style="width:100px;">
<div id='access_menu_edit'>编辑本节点</div>
<div id='access_menu_del'>删除本条目</div>
<div id='access_menu_refresh'>刷新节点</div>
<div id='access_menu_new'>新增子节点</div>
</div>
<table id="access_tg" title="权限分配" class="easyui-treegrid" style="height:500px"
url="/Admin/Access/treegrid" toolbar="#access_toolbar"
rownumbers="true" idField="id" treeField="description">
<thead>
<tr>
<th field="id" width="40">ID</th>
<th field="description" width="200" editor='text'>描述</th>
<th field="name" width="50">名称</th>
<th field="action" width="200" editor='text'>动作</th>
<th field="role" width="200" editor='text'>角色</th>
<th field="state" width="200" editor='text'>状态</th>
<th field="parentid" width="200" editor='text'>父层</th>
</tr>
</thead>
</table>
<div style="height:5px"></div>
<div id="access_toolbar" >
<a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-add" plain="true" id="access_lb_new">
</div>
</div>

显示界面如下:

1、点击几次权限分配按钮,可以打开“权限分配”页面,然后点击关闭,再次打开。

2、在第一条上右键菜单,点击“新增子节点”,然后树形结构变成了如下图,发现树形结构的子节点重复出现了多次。

3、关闭权限分配按钮,点击上面的“+”形图标,树形结构展开,可以发现子节点完全是正常的。

4、从源代码可以看到,点击“新增子节点”与点击上面的“+”形图标绑定的事件是相同的,但是出来的结果却不一样。

$("#access_lb_new,#access_menu_new").click(function(){
access_new();
});

5、查看发送系统执行的日志可以发现,第一次右键菜单的时候发送了多次获得子节点的请求。

6、将两个按钮的事件绑定代码分开写,如下,重复操作以上动作,发现结果就完全正常了,没有出现多个请求与子节点重复的情况。

  $("#access_lb_new").click(function(){
access_new();
});
$("#access_menu_new").click(function(){
access_new();
});

7、同时,我尝试了以第4点同样的方式绑定两个一般按钮(非右键弹出菜单),也不会出现子节点重复出现的问题。由此可见,只有在treegrid使用右键弹出菜单,并且将右键菜单的事件同时绑定在另外一个按钮上的时候,才会出现这种奇怪的现象。

8、那到底为什么会出现这种事情呢?期待哪位大大为小弟解答一下。

 
 
分类: JavaScript

Jquery EasyUI中treegrid的更多相关文章

  1. Jquery EasyUI中treegrid的中右键菜单和一般按钮同时绑定事件时的怪异事件

    做个项目使用jquery  easyui来做前端,也许是对此不是很熟悉,总是发现一些不可理解的事件. 主要源代码如下: <script type="text/javascript&qu ...

  2. 求助关于jquery easyUI中的treegrid组件,请各位帮忙给个思路,谢谢啦

    现在项目中用到jquery easyUI中的treegrid组件,已经可以正常显示了.但是在保存的时候遇到问题,页面上参照官网的例子可以在页面更新,但是怎么获取编辑后的数据进而保存到数据库呢?

  3. 第二百二十八节,jQuery EasyUI,TreeGrid(树形表格)组件

    jQuery EasyUI,TreeGrid(树形表格)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 TreeGrid(树形表格)组件的使 ...

  4. JQuery EasyUI中datagrid的使用

    在学习过程中,可以参照JQuery EasyUI的官方网站学习.地址:http://www.jeasyui.com/demo/main/index.php 在学习JQuery EasyUI中的Data ...

  5. jquery easyUI中combobox的使用总结

    jquery easyUI中combobox的使用总结 一.如何让jquery-easyui的combobox像select那样不可编辑?为combobox添加editable属性 设置为false ...

  6. easyUI中treegrid组件构造树形表格(简单数据类型)+ssm后台

    这几天做的项目要求用树形表格的形式展示一部分数据,于是就想到了使用easyUI的treegrid组件,但几经翻查各种资料,发现数据类型大多采取标准数据类型,即包含children元素的数据类型,小编查 ...

  7. Jquery easyui中的有效性检查

    使用过程中的一积累,备查. EasyUI 验证框使用方法: //*************************** missingMessage:未填写时显示的信息 validType:验证类型见 ...

  8. 谈一谈EasyUI中TreeGrid的过滤功能

    写在最前面 这个星期一直在纠结easyui的treegrid的过滤功能,原因呢,自然是项目中一个莫名奇妙的需求. easyui虽说是后端程序员的前端框架,但是说句实话,除去api,让我直接写里面的节点 ...

  9. 在jQuery EasyUI中实现对DataGrid进行编辑

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

随机推荐

  1. hightmaps 按地图上显示的统计数据

    离extjs 至 easyui 到html5到hightchars 再到hightmaps.Exjts和easyui很相似,extjs是重量级的,easyui轻量级的.比extjs容易上手.照着dem ...

  2. [全国首发]Swift视频教程

    我真的很抱歉,每个人,从7带班开始到现在,最后的成品带. 到了最新的版本号,Swift语言一直在更新,非常多写法都变了.大家能够加我私人微信:wanghj29,我会在朋友圈更新swift的最新动态.此 ...

  3. 浅谈javascript中的call()和apply()方法

    话说在js中,每个函数都包含两个非继承而来的放方法,apply()和call(),使得我们能在特定的作用域中调用函数. 官方定义: 语法:       fun.call(thisArg[, arg1[ ...

  4. Mac+PhpStorm+XAMPP+Xdebug

    Mac+PhpStorm+XAMPP+Xdebug 环境的配置   在上一篇 PHP 系列的文章<PHP 集成开发环境比较>中,我根据自己的亲身体验,非常简略的介绍和对比了几款常用的集成开 ...

  5. Cocos2d-x3.0 文件处理

    1.从文件中读取 auto sharedFileUtils = FileUtils::getInstance(); std::string ret; sharedFileUtils->purge ...

  6. 透过【百度地图API】分析双闭包问题

    原文:透过[百度地图API]分析双闭包问题 摘要: 有位API爱好者问到,昨天的教程里为什么不使用for循环?他使用for循环后,也发现代码无效.这是什么原因? ------------------- ...

  7. python tcp socket 多线程

    不多说,直接上代码 client.py #!/usr/bin/python import socket,sys,string host="localhost" port=8000 ...

  8. POJ 3311 Hie with the Pie floyd+状压DP

    链接:http://poj.org/problem?id=3311 题意:有N个地点和一个出发点(N<=10),给出全部地点两两之间的距离,问从出发点出发,走遍全部地点再回到出发点的最短距离是多 ...

  9. java之JAVA异常

    异常的分类 1. 编译时被检测异常:只要是Exception和其子类都是,除了特殊子类RuntimeException体系.         此类异常在处理时必须进行声明或进行捕捉         这 ...

  10. 注意,WebDeploy服务会占用80端口。(Windows关闭了IIS,80端口任然被占用)

    最近遇到一个很奇怪的事情,Windows上的 IIS 网站 全关掉了,80端口仍然被占用.然后我新装了一台服务器,一个一个组件地装,装一个测一次,最后发现,WebDeploy这个组件,会占用80端口. ...