我正在尝试将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选择?
答案 0 :(得分:0)
根据Lars Kotthoff的建议,我能够附加hoverIntent
处理程序。
nodes.each (d, i) ->
$(this).hoverIntent (-> highlightNode(d, i)), (-> unhighlightNode(d, i))
(CoffeeScript中的代码)
当然,highlightNode
和unhighlightNode
期望D3元素,而不是DOM元素。 D3的each
选项功能提供了D3 elelent(在d
中)以及DOM元素(绑定到this
)。
我使用this
选择DOM元素并在其上调用hoverIntent
。 “mouseenter”和“mouseleave”的处理程序是匿名函数,它们使用相应的D3元素highlightNode
调用现有处理程序unhighlightNode
和d
。