2016-07-10 28 views
0

我有一個3個楔子的基本餅圖。當你點擊餡餅的楔子時,將顯示一個工具提示。我的意圖是爲keydown事件提供相同的功能。如何將tabindex屬性添加到nvd3餅圖?

情景:當餅圖切片具有焦點時,用戶可以點擊一個按鍵(例如:enter),該按鍵將精確顯示click事件的工具提示。

我想這將需要2個步驟。

  1. 使每個餅楔(.NV片段)可聚焦通過添加「的tabindex = 0」屬性
  2. 添加事件偵聽觸發類似於點擊事件如何做的工具提示。

這裏是顯示了上述行爲plunkr: http://plnkr.co/edit/7WkFK2LqzDyDmnIt2xlf?p=preview (感謝@ThanasisGrammatopoulos)

首先第一件事情,我怎麼能添加的tabindex屬性,每個餅楔?當我嘗試下面的代碼時,它似乎並沒有出現:

d3.selectAll('.nv-slice').setAttribute("tabindex", "0"); 

任何想法?

回答

1

所以,

功能setAttribute是JavaScript,因此它有一個真正的JavaScript的HTML元素使用的vanila。

你有2種選擇,

解決方案1 ​​

獲取JavaScript的HTML元素,使用功能each然後 從this得到它。

d3.selectAll('.nv-slice').each(function(){ 
    this.setAttribute("tabindex", "0"); 
}); 

解決方案2

或者我們從jQuery的認識(一變化polular庫庫),你可以嘗試看看是否存在setAttribute相當於功能,這個功能是attr

d3.selectAll('.nv-slice').attr("tabindex", "0"); 

當然所有在回調函數裏面。

+0

啊,我需要.each()函數!爲了添加一個'輸入'keydown,我會添加一個事件監聽器以相同的方式點擊功能被稱爲? –

+0

如果我理解正確,是的。 – GramThanos