这个事件处理程序在做什么?

时间:2012-10-02 17:00:41

标签: javascript javascript-events event-handling d3.js

我已经尝试过检查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);
    });

非常感谢任何澄清。谢谢大家;)

2 个答案:

答案 0 :(得分:2)

这是一个命名空间

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

http://docs.jquery.com/Namespaced_Events

  

“jQuery提供了一个名为命名空间事件的概念:简单地添加一个   声明它时事件的类名。然后你可以参考   该命名空间事件都有unbind和trigger。“

$('.class').bind('click.namespace', function(){}); 
$('.class').trigger('click.namespace');
$('.class').unbind('click.namespace');

答案 1 :(得分:0)

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

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