熟悉jQuery的朋友一定熟悉它的datagrid组件,虽然不是专业的grid组件,但是使用起来还是相当方便的,功能也很到位,从1.2.4 版本开始,datagrid添加了onRowContextMenu事件,即行右键事件,多用来处理右键菜单,还有一个是表头右键事件 onHeaderContextMenu。
不过做项目的时候让用户还要点击一下右键才能弹出菜单,从交互上讲不是很友好,要是鼠标经过的时候就能弹出菜单,那就不错了,就像 wordpress后台评论管理页面,鼠标经过评论列表的时候便会出现“删除”、“审核”等操作按钮。如何给jQuery easyui datagrid添加mouseover和mouseout事件,其实很简单。
首先打开jquery.easyui.min.js文件,搜索一下自身已经绑定的onRowContextMenu事件,然后依葫芦画瓢,就很简单了,只是添加事件,几乎不涉及复杂代码,在6019行左右搜索到以下代码:
1 |
bind("contextmenu.datagrid",function(e){
|
2 |
var _400=$(this).attr("datagrid-row-index");
|
3 |
if(opts.onRowContextMenu){
|
4 |
opts.onRowContextMenu.call(_3fa,e,_400,data.rows[_400]); |
同样的,还有一处,那就是默认值,大概在7405行左右:
1 |
onRowContextMenu:function(e,_576,_577){
|
然后跟着样子绑定:
01 |
.bind("mouseover.datagrid",function(e){
|
02 |
var _400=$(this).attr("datagrid-row-index");
|
03 |
if(opts.onRowMouseoverMenu){
|
04 |
opts.onRowMouseoverMenu.call(_3fa,e,_400,data.rows[_400]); |
06 |
}).bind('mouseout.datagrid', function(e) {
|
07 |
var _400 = $(this).attr('datagrid-row-index');
|
08 |
if (opts.onRowMouseoutMenu) {
|
09 |
opts.onRowMouseoutMenu.call(_3fa, e, _400, data.rows[_400]); |
跟着样子设置默认值:
1 |
onRowMouseoverMenu:function(e,_576,_577){
|
2 |
},onRowMouseoutMenu:function(e,_576,_577){
|
到这个地方就算搞定了,很容易吧,对javascript的原型继承机制还没有深入研究,所以也只能做些皮毛的改动了。
在实际应用的时候仅仅靠这两个事件是远远不够的,菜单的延时显示,已经快速经过row时要中断延时,直接不显示,这就要配合setTimeout和clearTimeout使用了,改了下easyui demo里面的datagrid3.html文件以做演示:
点击此处查看演示效果