代码之家  ›  专栏  ›  技术社区  ›  manymanymore

获取d3.js中的事件函数

  •  1
  • manymanymore  · 技术社区  · 6 年前

    我怎样才能把事件函数 d3.js ?

    例如,有人编写了代码:

    var handleRelease = function() {
       console.log("hello world");
    }
    var foo = d3.select("#foo").on("mouseup", handleRelease);
    

    现在我想添加我自己的函数,当 foo 被释放。我该怎么做才能不破坏别人的代码呢?我是说如果我写:

    var myFunction = function() {
       console.log("bye, bye");
    }
    foo.on("mouseup", myFunction);
    

    功能 handleRelease 现在不会打电话了。

    所以,为了避免 x-y 这里我解释了我需要的附加事件函数列表。

    和搜索 results 一点帮助都没有。

    1 回复  |  直到 6 年前
        1
  •  4
  •   altocumulus    6 年前

    你认为这可能是一个xy的问题,你的评价就说明了这一点!对于您要实现的目标,不需要注册的事件处理程序列表。d3已经提供了将多个处理程序分配给单个事件类型的方法,允许您提供自定义名称/命名空间。规范 selection.on() 有(强调我的):

    该类型可以选择后跟句点( . )和一个名字;可选的名字 允许注册多个回调以接收相同类型的事件 ,例如 click.foo click.bar .

    对于您的代码,可能是这样的:

    var handleRelease = function() {
       console.log("hello world");
    }
    var foo = d3.select("#foo").on("mouseup.handleRelease", handleRelease);
    
    var myFunction = function() {
       console.log("bye, bye");
    }
    foo.on("mouseup.myFunction", myFunction);
    

    然后,这两个函数都独立注册为 mouseup 事件和将不会一起。