2013-09-04 2 views
0

У меня есть рабочий скрипт для применения преобразований к SVG, чтобы изображение было перетаскиваемым. Сценарий работает, когда я использую атрибуты элемента html.привязка предопределенных функций к событиям JQuery

<g id="all" onmousedown="startMove(evt)" onmousemove="moveIt(evt)" onmouseup="endMove(evt)"> 

Однако я хотел бы связать события с Jquery что-то вроде ниже и интересно, где я неправильно с кодом ниже

$('svg > g').mousedown(startMove(evt)); 
$('svg > g').mousemove(moveIt(evt)); 
$('svg > g').mouseup(endMove(evt)); 
+0

Событие ожидает функцию, но вы передаете возвращаемое значение функции. Функции тоже являются объектами, вы должны передать ссылку, а не выполнять ее. Итак, 'el.event (fn)' not 'el.event (fn())' – elclanrs

ответ

1

Попробуйте это:

$('svg > g').mousedown(function(evt){ 
    //do stuff 
}); 

или даже

$('svg > g').mousedown(startMove); 

function startMove(evt){ 
    //do stuff 
} 

startMove ссылка фактической функции, в то время как startMove() использует это возвращаемое значение.

+0

Я думаю, что второй работает только тогда, когда у вас нет аргументов для перехода к функции –

+1

@PeterSaxton, в этом случае он должен работать, потому что это ожидая события как аргумент –

+0

@PeterSaxton http://jsfiddle.net/vSPNK/ – Johan

0

Я считаю, что вы должны сделать это так:

$('svg > g').mousedown(function(evt){ 
    startMove(evt); 
});