我正在使用D3和JS。
我有一个创建按钮的功能,其中一个参数是onClick
,它在点击按钮时运行(显然)。
例如:
simpleButton(imageURL, width, height, title, onClick){
.attr("xlink:href", imageUrl) //-original image
.attr( "width", width) //-icon width
.attr( "height", height) //-icon height
.on("click", onClick)
.append("svg:title")
.text(title); //-give the button a title
}
现在我的一个按钮用于隐藏某些形状(即设置visibility:hidden
)。
所以我创建了另一个隐藏选择的函数,例如:
hideSelection(selection){
selection.classed("hidden", true);
}
此函数接受一个参数,以便我可以通过我想要隐藏的内容。
因此,例如我认为可行的工作如下:
simpleButton("\images\dog", 100, 100, "dog", hideSelection(dog));
现在,这确实有效,但是在没有我点击的情况下它可以直接使用。我知道这是因为我因为括号 - ()而直接调用hideSelection
。
但我的问题是,如何在运行时立即停止调用此功能?如何通过另一个具有参数的函数运行带参数的函数(如果这有任何意义的话)?
答案 0 :(得分:2)
你应该把它包装在一个匿名函数中:
simpleButton("\images\dog",100,100, "dog", function() {
hideSelection(dog)
});
此函数可以访问dog
变量,因为它是closure - 在创建父作用域时可以访问父作用域的函数。
答案 1 :(得分:2)
您确实立即调用hideSelection(dog)
并将结果传递给simpleButton
- 您需要将引用传递给函数。最简单的方法是将其包装在另一个函数中:
simpleButton("\\images\\dog", 100, 100, "dog", function() {
hideSelection(dog)
});
(P.S.你可能想要逃避图像路径中的\
)