在 morris.js 中的甜甜圈段上触发点击事件

Meh*_*hna 2 javascript jquery morris.js

我可以使用 Morris.select() 在甜甜圈中保留一个默认段。

除此之外,我想在同一个(默认选择段)上触发一个点击事件。有没有办法达到这个目标?

我什至尝试过$('path').eq(1).trigger('click'),但没有奏效。

krl*_*zlx 5

on('click')在您的莫里斯甜甜圈对象中添加一个函数。然后您可以使用row参数访问甜甜圈数据。

正如你所说,你可以用select(index)甜甜圈的方法选择一个片段。然后如果要显示相应段的数据,调用一个以Donut数据为参数的函数,例如:morrisDonut.data[index]

这是一个工作示例:

var morrisDonut = Morris.Donut({
  element: 'donut',
  data: [
    {label: "Download Sales", value: 12},
    {label: "In-Store Sales", value: 30},
    {label: "Mail-Order Sales", value: 20}
  ],
  resize: true
}).on('click', function (i, row) {  
    // Do your actions
    // Example:
    displayData(i, row);
});

// Index of element to select
var i = 2;
// Selects the element in the Donut
morrisDonut.select(i);
// Display the corresponding data
displayData(i, morrisDonut.data[i]);

function displayData(i, row) {
    $('#data').html(row.label + ": " + row.value);
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.min.js"></script>
<link href="//cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.css" rel="stylesheet" />

<div id="donut"></div>
<div id="data"></div>
Run Code Online (Sandbox Code Playgroud)