当鼠标在节点上方/关闭时,我有这些调用
.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);
}
答案 0 :(得分:4)
定义一个匿名函数,调用它们:
.on("mouseover", function(d) {
highlightImage(d);
showTextToolTip(d);
});
,同样适用于mouseout
。
如果在处理函数中引用this
,则需要使用不同的方法来调用函数以确保它正确传递:
.on("mouseover", function(d) {
highlightImage.call(this, d);
showTextToolTip.call(this, d);
});