selection.on
selection.on(type[, listener[, capture]]) //为交互添加或移除事件监听器
在当前选择的每个元素,为指定的类型type,添加或删除事件监听器listener 。type是一个字符串事件类型的名称,如“点击”,“鼠标悬停”,或“提交”。基本上支持任何DOM事件。有关D3支持的事件类型的更多详细信息,请查看Mozilla或Stackoverflow。指定的listener 与其他操作符函数调用方式相同,被传递的当前数据d和索引i与this上下文作为当前的DOM元素。为了在侦听器内访问当前事件,使用全局函数d3.event。事件侦听器的返回值将被忽略。
如果所选择的元素相同类型的一个事件监听已经注册了,新的侦听加入之前的现有侦听被除去。为注册相同事件类型的多个监听器,该类型可以跟一个可选的命名空间,如“click.foo”和“click.bar”。 要删除一个监听器,传递null给listener,删除特定事件类型所有监听,传递null给listener,指定.type的类型,如:selection.on(".foo", null)。
一个可选的捕获capture标志可以指定,对应于W3C的useCapture标志:“开始捕获后,所有指定类型的事件将被分派到注册的EventListener在被分派到事件树任何EventTargets下,事件是沿着树向上冒泡而不会触发一个EventListener指定使用捕获”。
如果未指定监听器,指定类型(如果有)返回当前分配的监听器。
eg:
.on("mouseover",function(d,i){
d3.select(this)
.attr("fill","#9435e7")
.attr("cursor","pointer")
})
.on("mouseout",function(d,i){
d3.select(this)
.attr("fill",color(i));
})