Почему этот обработчик событий в RaphaelJS запускается сразу? - PullRequest
2 голосов
/ 22 ноября 2011

Почему этот обработчик событий в 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));
});  

Ответы [ 2 ]

3 голосов
/ 22 ноября 2011

.mousedown() ожидает ссылку на функцию в качестве аргумента. Вместо этого вы вызываете функцию, и все .mousedown() получает в качестве параметра undefined. Поскольку вам нужно передать circle на enlarge(), вы не можете передать ссылку на enlarge напрямую. Вместо этого поместите ваш вызов в enlarge() в функции:

button.mousedown(function () {
    enlarge(circle);
});
3 голосов
/ 22 ноября 2011

Потому что вы звоните прямо сейчас.

Заменить button.mousedown(enlarge(circle)); на этот код:

button.mousedown(function() {
    enlarge(circle)
});
...