我已经尝试过检查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);
});
非常感谢任何澄清。谢谢大家;)
答案 0 :(得分:2)
这是一个命名空间
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
部分没有特殊含义,它只是一个标识符。