javascript - 元素内的每次移动都不会激活悬停/鼠标悬停

标签 javascript jquery chart.js

我正在使用 Chartjs v.1.0.2 并尝试设置一个仅在悬停在当前点上时出现的点。同样的问题是当我使用悬停或鼠标悬停时。可以使用 getPointsAtEvent(e); 找到当前点,但只有当我将鼠标移出 Canvas 然后将其返回时,它才起作用,而当我在 Canvas 内移动时则不起作用。每次我在 Canvas 元素内移动鼠标时它如何工作?

window.onload = function(){

        var ctx = $("#chart1").get(0).getContext("2d");
                var chart1 = new Chart(ctx).Line(data1, options);


                $("#chart1").hover(function(e) {
                    var activeBars = chart1.getPointsAtEvent(e); 
                    activeBars[0].display = true;
//                    console.log(activeBars[0]);
                    chart1.update();
                 });

    };

    var data1 = {
            labels: ["January", "February", "March", "April", "May", "June", "July"],
            datasets: [
                {
                    label: "My First dataset",
                    fillColor: "rgba(95,186,88,0.7)",
                    strokeColor: "rgba(95,186,88,1)",
                    pointColor: "rgba(95,186,88,1)",
                    pointStrokeColor: "#fff",
                    pointHighlightFill: "#fff",
                    pointHighlightStroke: "rgba(220,220,220,1)",
                    data: [65, 59, 80, 81, 56, 55, 40]
                }
            ]
    };



var options = {
    responsive: true,
    bezierCurve : false,
    scaleShowLabels: false,
    scaleFontSize: 0,
    pointDot : false,
    scaleBeginAtZero: true,
    scaleShowHorizontalLines: false,
    scaleShowVerticalLines: true,
    scaleGridLineColor : "rgba(232,232,232)",
    showTooltips: true,

    customTooltips: function (tooltip) {
        var tooltipEl = $('#chartjs-tooltip');

        if (!tooltip) {
            tooltipEl.css({
                opacity: 0
            });
            return;
        }

        tooltipEl.removeClass('above below');
        tooltipEl.addClass(tooltip.yAlign);

        // split out the label and value and make your own tooltip here
        var parts = tooltip.text.split(":");
        var innerHtml = '<span>' + parts[0].trim() + '</span> : <span><b>' + parts[1].trim() + '</b></span>';
        tooltipEl.html(innerHtml);

        tooltipEl.css({
            opacity: 1,
            left: tooltip.chart.canvas.offsetLeft + tooltip.x + 'px',
            top: tooltip.chart.canvas.offsetTop + tooltip.y + 'px',
            fontFamily: tooltip.fontFamily,
            fontSize: tooltip.fontSize,
            fontStyle: tooltip.fontStyle,
        });
    }

};

简化 fiddle

最佳答案

pointDot选项设置为true。

...
pointDot : true,
...

然后将系列的 pointColorpointStrokeColor 设置为透明,并将 pointHighlightFillpointHighlightStroke 设置为非透明值,就像这样

...
    pointColor: "rgba(0,0,0,0)",
    pointStrokeColor: "rgba(0,0,0,0)",
    pointHighlightFill: "rgba(95,186,88,1)",
    pointHighlightStroke: "rgba(95,186,88,1)",
...

fiddle - http://jsfiddle.net/p1zgp5ys/

关于javascript - 元素内的每次移动都不会激活悬停/鼠标悬停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33924048/

相关文章:

javascript - dojo 图表 - 轴标签不适合图表

javascript - 错误 "Uncaught SyntaxError: Unexpected token with JSON.parse"

javascript - 通过表单 .submit 提交多个选项卡内容

javascript - 使用 Chart.js 配置雷达图

javascript - 如何使用 JSDoc 注释 Express 中间件?

javascript - 语法错误 : expected expression, 在 AngularJS 路由刷新时得到 '<'

javascript - 将 ExtJS 组件放入 div 中

javascript - jquery - 当图像大于容器时可拖动图像

javascript - 使用ajax将数据从php发送到图表

javascript - Javascript 代码中的这个 If 条件有什么问题吗?