2012-10-25 84 views
0

這可能會在文檔中得到解答,但我無法解決。將多個函數應用於d3.js對象,同時輸入

基本上我有一些標準d3.js這樣的代碼:

group.selectAll('rect') 
    .data(data) 
.enter().append('svg:rect') 
    .style('fill', colour) 
    .on('mouseover', function(d, i) { 
    chart.currentHoverItem = d 
    }) 
    .on('mouseout', function(d, i) { 
    chart.currentHoverItem = null 
}) 

我有幾個不同的方法,這些相同的線貫穿我的代碼。理想情況下,我想這樣做:

var addEvents() { 
    this.on('mouseover', function(d, i) { ... }) 
    this.on('mouseout', function(d, i) { ... }) 
} 

group.selectAll('rect') 
    .data(data) 
.enter().append('svg:rect') 
    .apply(addEvents) 

什麼是幹這個代碼最好的解決方案?

回答

1

你可能會尋找selection.call,試試這個:

function addEvents(selection) { 
    selection.on(...); 
    selection.on(...); 
} 

group.selectAll('rect') 
    .data(data) 
.enter() 
    .append('svg:rect') 
    .call(addEvents); 
+0

完美!謝謝。我知道它會在某個地方。 –

相關問題