将事件监听器附加到Jupyter笔记本?

时间:2017-03-08 03:08:46

标签: javascript jquery events jupyter-notebook jupyter

我正在尝试将事件附加到Jupyter笔记本变量(对于某些实验):

$( "#notebook-container" ).on( "dblclick", ".cm-variable", function( event ) { alert("hi"); });

由于Jupyter笔记本变量不断刷新/等等,我认为将事件处理程序附加到所有变量的最佳方法是通过jquery事件委派:https://learn.jquery.com/events/event-delegation/

&#34;事件委托允许我们将单个事件监听器附加到父元素,该元素将为匹配选择器的所有后代触发,无论这些后代现在是存在还是将来添加。&#34; < / p>

所以我认为这是合适的,但是,如果我将上面共享的代码行粘贴到js控制台中,我没有达到预期的效果。

我想知道这样做的正确方法是什么,你可以在这里访问一个真实的jupyter笔记本:https://try.jupyter.org/

1 个答案:

答案 0 :(得分:1)

根据this回答,以下是如何使用mousedown / mouseup模拟双击(mouseup可能更好,因为点击是在用户抬起鼠标后触发而不是在他们第一次按下时它)

var clicks = 0, delay = 400;
$("#notebook-container").on("mouseup", ".cm-variable", function(event) {
    event.preventDefault();
    clicks++;

    setTimeout(function() {
        clicks = 0;
    }, delay);

    if (clicks === 2) {
        clicks = 0;
        alert("hi");
        return;
    }
});