如何在 Jupyter 中使用 JavaScript 选择当前单元格?

Ian*_*anS 6 javascript ipython jupyter jupyter-notebook

我有一个包含 JavaScript 代码的笔记本单元格,我希望代码选择这个特定的单元格。不幸的是, 的行为get_selected_cell取决于我是就地执行单元格,还是执行并选择下面的单元格。

例子:

%%javascript
var cell = Jupyter.notebook.get_selected_cell();
console.log(Jupyter.notebook.find_cell_index(cell));
Run Code Online (Sandbox Code Playgroud)

执行此单元格时,无论我使用Ctrl+Enter还是执行,控制台输出都会有所不同Shift+Enter。在一种情况下,它记录包含 JavaScript 代码的单元格的索引,在另一种情况下记录下面单元格的索引。

有没有办法选择我想要的单元格?

min*_*nrk 7

您的 Javascript 将在应用 Javascript 的 OutputArea 上有一个句柄,但不是一直到单元格的句柄(通常,可以在没有单元格或笔记本的情况下使用输出区域)。您可以通过识别父.cell元素来找到单元格,然后获取该元素对应的单元格:

%%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);
Run Code Online (Sandbox Code Playgroud)