zoukankan      html  css  js  c++  java
  • easyUi datagrid鼠标经过提示单元格内容

    此文章是基于  EasyUI+Knockout实现经典表单的查看、编辑

    一. jquery.cellTip.js

    /**
     * 扩展两个方法
     */
    using('datagrid', function(){
        $.extend($.fn.datagrid.methods, {
            /**
             * 开打提示功能
             * @param {} jq
             * @param {} params 提示消息框的样式
             * @return {}
             */
            doCellTip: function(jq, params){
                function showTip(data, td, e){
                    if ($(td).text() == "") 
                        return;
                    data.tooltip.text($(td).text()).css({
                        top: (e.pageY + 10) + 'px',
                        left: (e.pageX + 20) + 'px',
                        'z-index': $.fn.window.defaults.zIndex,
                        display: 'block'
                    });
                };
                return jq.each(function(){
                    var grid = $(this);
                    var options = $(this).data('datagrid');
                    if (!options.tooltip) {
                        var panel = grid.datagrid('getPanel').panel('panel');
                        var defaultCls = {
                            'border': '1px solid #333',
                            'padding': '2px',
                            'color': '#333',
                            'background': '#f7f5d1',
                            'position': 'absolute',
                            'max-width': '200px',
                            'border-radius' : '4px',
                            '-moz-border-radius' : '4px',
                            '-webkit-border-radius' : '4px',
                            'display': 'none'
                        }
                        var tooltip = $("<div id='celltip'></div>").appendTo('body');
                        tooltip.css($.extend({}, defaultCls, params.cls));
                        options.tooltip = tooltip;
                        panel.find('.datagrid-body').each(function(){
                            var delegateEle = $(this).find('> div.datagrid-body-inner').length ? $(this).find('> div.datagrid-body-inner')[0] : this;
                            $(delegateEle).find('td').each(function(i){
                                var ele = $(this).parent();
                                // 适用于treegrid
                                if($(this).find('td').length > 0)
                                    ele = $(this);
                                $(ele).undelegate('td', 'mouseover').undelegate('td', 'mouseout').undelegate('td', 'mousemove').delegate('td', {
                                    'mouseover': function(e){
                                        if (params.delay) {
                                            if (options.tipDelayTime) 
                                                clearTimeout(options.tipDelayTime);
                                            var that = this;
                                            options.tipDelayTime = setTimeout(function(){
                                                showTip(options, that, e);
                                            }, params.delay);
                                        }
                                        else {
                                            showTip(options, this, e);
                                        }
                                        
                                    },
                                    'mouseout': function(e){
                                        if (options.tipDelayTime) 
                                            clearTimeout(options.tipDelayTime);
                                        options.tooltip.css({
                                            'display': 'none'
                                        });
                                    },
                                    'mousemove': function(e){
                                        var that = this;
                                        if (options.tipDelayTime) 
                                            clearTimeout(options.tipDelayTime);
                                        //showTip(options, this, e);
                                        options.tipDelayTime = setTimeout(function(){
                                                showTip(options, that, e);
                                            }, params.delay);
                                    }
                                });
                            });
                            
                        });
                        
                    }
                    
                });
            },
            /**
             * 关闭消息提示功能
             *
             * @param {}
             *            jq
             * @return {}
             */
            cancelCellTip: function(jq){
                return jq.each(function(){
                    var data = $(this).data('datagrid');
                    if (data.tooltip) {
                        data.tooltip.remove();
                        data.tooltip = null;
                        var panel = $(this).datagrid('getPanel').panel('panel');
                        panel.find('.datagrid-body').undelegate('td', 'mouseover').undelegate('td', 'mouseout').undelegate('td', 'mousemove')
                    }
                    if (data.tipDelayTime) {
                        clearTimeout(data.tipDelayTime);
                        data.tipDelayTime = null;
                    }
                });
            }
        });
    });

    二. 测试页面

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <html>
     <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>datagrid鼠标经过提示单元格内容</title>
        <%@ include file="/common/head.jsp"%>
     </head>
     <body>
        <div style="margin:10px 0;">
        <a href="#" onclick="doCellTip()">显示提示消息</a>
        <a href="#" onclick="cancelCellTip()">禁止消息显示</a>
        <div id="info"></div>
        </div>
    
        <table id="test" class="easyui-datagrid" style="100%;height:520px;" data-options="fitColumns:true, singleSelect:true, rownumbers:true">
            <thead>
          <tr>
            <th data-options="field:'direction', 150, align:'center'">direction</th>
          </tr>
        </thead>
        </table>
    
        <%@ include file="/common/foot.jsp"%>
        <script type="text/javascript" src="content/js/jquery-plugin/cellTip/jquery.cellTip.js"></script>
        <script type="text/javascript">    
        function doCellTip(){
            $('#test').datagrid('doCellTip', {'cls':{'max-width':'200px'}});
        }
        function cancelCellTip(){
            $('#test').datagrid('cancelCellTip');
        }
    
        $(function(){
            var data = ${data};
            ko.bindingViewModel(new viewModel(data));
        });
            using(['messager', 'datagrid'], function(){
                $('#test').datagrid({
            onLoadSuccess: function(data){
                $(this).datagrid('doCellTip', {'cls':{'max-width':'600px'}, 'delay':500});
            }
            });
            });
        </script>
      </body>
    </html>
    testGrid.jsp
  • 相关阅读:
    面向对象(metaclass继承高级用法)
    建表和删表(sqlalchemy框架)
    单表操作
    认证,权限
    协程,twisted
    定制起始url(scrapy_redis)
    浅谈深度优先和广度优先(scrapy-redis)
    scrapy-redis(调度器Scheduler源码分析)
    scrapy-redis
    xpath
  • 原文地址:https://www.cnblogs.com/Mr-kevin/p/8473246.html
Copyright © 2011-2022 走看看