jquery flot传奇中的事件处理程序

时间:2014-12-03 16:54:48

标签: javascript jquery html5 web flot

我正在使用plot jquery绘制任意数量的数据集。该图的图例是动态生成的,因为我没有关于有多少数据集是先验的信息。 我想要的是,每当用户点击其中一个系列的标签时,其图形就会突出显示。我发现重新排序数据集的数组将完成这项工作。 问题是用户单击图例时。 我的传奇代码是:

     legend: {
                noColumns: 0,

                labelFormatter: function(label, series){
                    var lab = '<a href="#" style="color:black" id="'+label.split('/')[1]+'">' + label.split('/')[0] + '</a>';
                    return lab;
                },
                backgroundColor: "#000",
                backgroundOpacity: 0.9,
                labelBoxBorderColor: "#000000",
                position: "nw"
            },

我试图在labelFormatter函数中设置一个处理程序,但这不起作用。此外,我试图为每个标签设置一个类,并在外部函数外部访问它们,但它也不起作用。简而言之,我不知道如何访问标签,也不知道何时或何处放置事件处理程序。你能帮帮我吗?

1 个答案:

答案 0 :(得分:3)

我认为你所拥有的是亲密的。我建议将一个类放在您从标签格式化程序返回的锚标记上。像这样:

labelFormatter: function(label, series){
    var lab = '<a href="#" class="legendButton" style="color:black" id="'+label.split('/')[1]+'">' + label.split('/')[0] + '</a>';
    return lab;
}

然后,使用委托(jQuery的“on”),如果您有权访问图表的占位符,则可以在图例上获取事件。例如:

$('#chartPlaceholderId').on('click', '.legendButton', function () {
    // do stuff
});

或者,您可以使用浏览器的元素检查器来查看是否存在可用于将事件绑定到图例的任何默认类。无论哪种方式,您可能都必须使用委托,因此在创建事件绑定后呈现的任何图例仍将注册事件。