2012-10-02 38 views
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); 
    }); 

任何澄清是非常赞赏。感谢乡亲;)

回答

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'); 
+1

这是正确的,但请注意,OP不*使用jQuery *他使用D3,它提供了类似的事件命名空间。 – nrabinowitz

+0

令人惊叹!谢谢你;)解决! –

0

在这种情况下,如在D3 documentation for selection.on解释的,它只是一个注册多个监听器为同一事件的方式。例如,如果您想注册两个听众mouseover,则需要使用.on("mouseover.foo",....on("mouseover.bar",...

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

相关问题