2016-09-21 77 views
0

我有一個包含JavaScript代碼的筆記本單元,我希望代碼選擇這個特定的單元格。不幸的是,get_selected_cell的行爲取決於我是否在適當的位置執行單元格,或者執行並選擇下面的單元格。如何在Jupyter中使用JavaScript選擇當前單元格?

實施例:

%%javascript 
var cell = Jupyter.notebook.get_selected_cell(); 
console.log(Jupyter.notebook.find_cell_index(cell)); 

當執行這個單元時,控制檯輸出將是不同的I是否與Ctrl+EnterShift+Enter執行。在一種情況下,它會記錄包含JavaScript代碼的單元格的索引,另一種情況下會記錄下面單元格的索引。

有沒有辦法選擇我想要的細胞?

+1

'selected_cell'指在UI中選擇的一個:可以通過標識父.cell元素,然後得到相應於該元素的細胞找到小區。在JavaScript內部添加到單元格的輸出區域中,'this'是輸出區域。儘管如此,我目前還找不到從它到它所屬的單元的方式。 –

+0

@ThomasK感謝,我想這是不可能的,那麼... – IanS

+1

我懷疑這可能是可能的一些令人費解的JS兩輪牛車,但我不知道怎麼辦。隨意在[筆記本回購](https://github.com/jupyter/notebook)上打開一個功能請求,以從JS輸出中引用單元格的官方方式。 –

回答

2

你的JavaScript將會對應用的JavaScript OutputArea一個把手,卻沒有一個一路細胞(一般來說,可以在不細胞或筆記本電腦上輸出區域)。

%%javascript 
var output_area = this; 
// find my cell element 
var cell_element = output_area.element.parents('.cell'); 
// which cell is it? 
var cell_idx = Jupyter.notebook.get_cell_elements().index(cell_element); 
// get the cell object 
var cell = Jupyter.notebook.get_cell(cell_idx); 
+0

謝謝,我曾嘗試'element'而不是'this'。這工作就像一個魅力... – IanS

相關問題