2016-09-21 57 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

相关问题