2

我尝试过检查 DOM 等等,但不确定为什么将 '.tooltip' 附加到处理程序中。如果删除它不会影响任何东西,并且似乎没有重要价值:

    g.selectAll("circle")
        //
        //why is .tooltip appended here?
        //
        .on("mouseover.tooltip", function(d) {
        d3.select("text#" + d.line_id).remove();
        d3.select("#chart")
            .append("text")
            .text(d.late_percent + "%")
                .attr("x", time_scale(d.time) + 10)
                .attr("y", percent_scale(d.late_percent) - 10)
                .attr("id", d.line_id);
    });

任何澄清都非常感谢。

4

2 回答 2

2

这是一个命名空间

http://api.jquery.com/on/

http://docs.jquery.com/Namespaced_Events

“jQuery 提供了一个名为命名空间事件的概念:只需在声明事件时为其添加一个类名。然后您可以通过取消绑定和触发器引用该命名空间事件。”

$('.class').bind('click.namespace', function(){}); 
$('.class').trigger('click.namespace');
$('.class').unbind('click.namespace');
于 2012-10-02T17:12:15.643 回答
0

在这种情况下,如selection.on 的 D3 文档中所述,它只是为同一事件注册多个侦听器的一种方式。例如,如果要注册两个侦听器,则mouseover需要使用.on("mouseover.foo",....on("mouseover.bar",...

否则,如果您只使用.on("mouseover",..两次,您将替换已注册的侦听器mouseover而不是添加新侦听器。该tooltip部分没有特殊含义,它只是一个标识符。

于 2012-11-08T19:17:56.733 回答