2012-10-02 40 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部分沒有特別的含義,它只是一個標識符。

相關問題