在選擇上附加基本事件
通常,你會希望為物件建立事件。
function spanOver(d,i){
var span = d3.select(this);
span.classed("spanOver",true);
}
function spanOut(d,i){
var span = d3.select(this);
span.classed("spanOver", false);
}
var div = d3.select('#divID');
div.selectAll('span')
.on('mouseover' spanOver)
.on('mouseout' spanOut)
當滑鼠懸停在具有 id divID
的 div 內的 span 上時,此示例將新增類 spanOver
,並在滑鼠退出 span 時將其刪除。
預設情況下,d3 將傳遞當前範圍和索引的資料。非常方便 this
的上下文也是當前物件,以便我們可以對它進行操作,比如新增或刪除類。
你也可以在事件上使用匿名函式。
div.selectAll('span')
.on('click', function(d,i){ console.log(d); });
資料元素也可以新增到當前所選物件中。
div.selectAll('path')
.on('click', clickPath);
function clickPath(d,i) {
if(!d.active) {
d.active = true;
d3.select(this).classed("active", true);
}
else {
d.active = false;
d3.select(this).classed("active", false);
}
}
在此示例中,在觸發 click 事件之前未在選擇上定義 active。如果你要返回路徑選擇,但所有單擊的物件都將包含 active
鍵。