echarts官网_echarts 单击和双击实现程序代码

更新时间:2019-07-01    来源:jquery    手机版     字体:

【www.bbyears.com--jquery】

所谓的模拟就是用javascript的timer定时器,进行模拟2次单击的时间差。

通用例子:

setTimeout

在jQuery的$(document).ready(function(){})里面直接开写:

 代码如下
//定义setTimeout执行方法
var TimeFn = null;
$("div").click(function () {
    // 取消上次延时未执行的方法
    clearTimeout(TimeFn);
    //执行延时
    TimeFn = setTimeout(function(){
        //do function在此处写单击事件要执行的代码
    },300);
});
$("div").dblclick(functin () {
     // 取消上次延时未执行的方法
    clearTimeout(TimeFn);
    //双击事件的执行代码
})

从测试结果来看,如果前后两次点击的时间在 300ms 左右的时候,还是很容易出现 click 和 dblclick 事件被“同时”调用的情况,而如果间隔的时间更短或更长,则只会有 click 或 dblclick 事件。

至此,能一定程度上避免双击(dblclick)时触发单击(click)。

在echarts上的实现比较简单,只有在myChart绑定事件:EVENT.MAP_SELECTED。其他图形报表根据事件来,有得是click。

      

 代码如下 require([
            "echarts",
            "echarts/chart/line", //使用线性图,加载line模块
            "echarts/chart/map"
        ], function (ec) {
            // 基于已有dom,初始化图表
            
            ecConfig = require("echarts/config");
            zrEvent = require("zrender/tool/event");
            myChart = ec.init(document.getElementById("main"));
            myChart.on(ecConfig.EVENT.MAP_SELECTED, function (param) {
                debugger
                var len = mapType.length;
                var mt = mapType[curIndx % len];
                if (mt == "china") {
                    // 全国选择时指定到选中的省份
                    var selected = param.selected;
                    for (var i in selected) {
                        if (selected[i]) {
                            mt = i;
                            while (len--) {
                                if (mapType[len] == mt) {
                                    curIndx = len;
                                }
                            }
                            firstSeleted = mt;
                            break;
                        }
                    }
                } else {
                }
                seleted = mt;
                a += 1;
                timer1 = setTimeout(e2, 300);
            });
            myChart.setOption(option, true);
        });
        function e2() {
            clearTimeout(timer1);
            if (a == 2) {
         
                alert("双击" + seleted);
                //双击需要判断在哪个页面双击如,全国页面双击,或者省页面双击
                curIndx = 0;
                mt = "china";
                option.tooltip.formatter = "点击进入该省
{b}:{c}";
                option.series[0].itemStyle.normal.label.formatter = "{a}:{b}";
                option.series[0].mapType = seleted;
                option.title.subtext = seleted + " (点击切换)";
                option.series[0].data = [];
                parent.sendParamData(firstSeleted, a);
            }
            if (a == 1) {
                curIndx = 0;
                mt = "china";
                alert("单击" + seleted);
               
                option.tooltip.formatter = "点击返回全国
{b}:{c}";
                //调用父页面的javascript 方法传入
                option.series[0].mapType = seleted;
                option.title.subtext = seleted + " (点击切换)";
                option.series[0].data = [];
                //parent.sendParamData(firstSeleted,a);
            }
            if (a >=2) {
                curIndx = 0;
                mt = "china";
            }
            a = 0;
        }
      
        
        function dataXRand(data) {
            //          myChart.clear();
            var arr = [];
            var arrData = data.split(";");
            for (var i = 0; i < arrData.length; i++) {
                var currentData = arrData[i];
                var arrCurrentData = currentData.split(":");
                var jsonData = { name: arrCurrentData[0], value: parseInt(arrCurrentData[1]) };
                arr.push(jsonData);
            }
            option.series[0].data = arr;
            myChart.setOption(option, true);
        }

本文来源:http://www.bbyears.com/wangyezhizuo/56071.html