Tenho a sensação de que estou ou não entendendo o evento "stop" ou não fazendo certo, mas parece que ele foi chamado várias vezes enquanto o elemento está vinculado a ser arrastado.
makeAllDragable = function () {
$(".test-table").draggable({
start: function (event, ui) { $(this).click(); },
stop: function (event, ui) { foo() }
}).click(function () {
selectTable($(this));
});
}
foo = function () {
alert("test");
}
Neste exemplo foo é chamado cerca de 30 vezes, não deveria ser apenas quando eu solto o arrastável? Os documentos do jQuery realmente não dizem um onde ou outro embora.
Respostas:
2 para resposta № 1Como se constata, o código acima que eu escrevi na minha pergunta original não era o que eu estava trabalhando, eu realmente tinha foo () chamado assim:
makeAllDragable = function () {
$(".test-table").draggable({
start: function (event, ui) { $(this).click(); },
stop: function (event, ui) { foo() }
}).click(function () {
foo(); /*difference here*/
});
}
Por qualquer motivo, arrastá-lo aumenta a função click () repetidamente quando a função também está presente no evento stop (). Pelo menos é o que parece estar acontecendo na superfície, pelo menos.