如何让一个事件调用多个函数? D3 / JavaScript的

时间:2014-12-05 15:30:24

标签: javascript d3.js

当鼠标在节点上方/关闭时,我有这些调用

    .on("mouseover", highlightImage)
    .on("mouseout", unhighlightImage)

    .on("mouseover", showTextToolTip)
    .on("mouseout", hideTextToolTip)

现在,因为javascript是异步读取的,所以只调用底部的两个函数。我环顾四周,发现了几个例子:

.on("mouseover", "highlightImage(); showTextToolTip()") //- doesnt work

.on("mouseover", mouseOverFunctions) //- calls a function>

function mouseOverFunctions(){
    showTextToolTip();
    highlightImage();
    } //- also doesnt work.

我认为这是因为鼠标悬停'只能一次调用一个对象。

如何一次调用这两个函数?我希望显示文本并突出显示节点


添加了代码

function showTextToolTip(d){
if(textButtonPressed==false){
d3.select(this).append("text")
    .attr("dx", "2")
    .attr("dy", "-24")
    .style("text-anchor", "start")
    .text(function(d) { return d.identifier; });
    showToolTip="true";
}}

function highlightImage(d){
    d3.select(this).classed("highlighted", true);
    highlightedNode = d.coreId;
    //console.log("Highlighted node : " + highlightedNode);
}   

1 个答案:

答案 0 :(得分:4)

定义一个匿名函数,调用它们:

.on("mouseover", function(d) {
  highlightImage(d);
  showTextToolTip(d);
});

,同样适用于mouseout

如果在处理函数中引用this,则需要使用不同的方法来调用函数以确保它正确传递:

.on("mouseover", function(d) {
  highlightImage.call(this, d);
  showTextToolTip.call(this, d);
});