为什么RaphaelJS(2.0.0)中的此事件处理程序会立即运行而不是单击它时?
function enlarge (shape) {
shape.animate({'transform' : 's2'}, 200);
}
jQuery(function () {
var paper = Raphael("canvas", 1000, 1000);
var button = paper.circle(300, 50, 20);
button.attr({'fill':'black'});
var circle = paper.circle(50, 50, 20);
circle.attr({'fill':'red'});
button.mousedown(enlarge(circle));
});
答案 0 :(得分:3)
因为你立即打电话。
使用以下代码替换button.mousedown(enlarge(circle));
:
button.mousedown(function() {
enlarge(circle)
});
答案 1 :(得分:3)
.mousedown()
期望函数引用作为其参数。相反,您正在调用一个函数,并且所有.mousedown()
获取的参数都是undefined
。由于您需要将circle
传递给enlarge()
,因此无法直接传递enlarge
的引用。而是将您的呼叫包裹在函数中的enlarge()
:
button.mousedown(function () {
enlarge(circle);
});