可以在d3.js中使用hoverIntent吗?

时间:2013-07-10 15:52:57

标签: d3.js hoverintent

我正在尝试将hoverIntent用于D3。现在,hoverIntent的工作方式与jQuery's hover类似。

最初,我在D3中创建了mouseOver-events:

nodes
  .on("mouseover", highlightNode)
  .on("mouseout", unhighlightNode)

但是,在on中使用“hoverIntent”(或“hover”)是不可能的,因为它们是伪事件。

虽然D3选择器似乎就像jQuery选择器一样,但执行类似nodes.hover(highlightNode, unhighlightNode)的操作是不可能的。通过将“mouseenter”和“mouseleave”事件绑定到相应的处理程序, 可以替换hover,但我不知道如何以类似的方式替换hoverIntent

有没有办法将hoverIntent分解为可以使用on绑定的事件?或者有没有办法将D3选择转换为jQuery选择?

1 个答案:

答案 0 :(得分:0)

根据Lars Kotthoff的建议,我能够附加hoverIntent处理程序。

nodes.each (d, i) ->
  $(this).hoverIntent (-> highlightNode(d, i)), (-> unhighlightNode(d, i))

CoffeeScript中的代码)

当然,highlightNodeunhighlightNode期望D3元素,而不是DOM元素。 D3的each选项功能提供了D3 elelent(在d中)以及DOM元素(绑定到this)。

我使用this选择DOM元素并在其上调用hoverIntent。 “mouseenter”和“mouseleave”的处理程序是匿名函数,它们使用相应的D3元素highlightNode调用现有处理程序unhighlightNoded