Вход

Просмотр полной версии : Это баг или я что-то непонимаю?


Kenshi25
25.09.2010, 11:55
Функция slideToggle( скорость, [вызов] )
В документации сказано, что можно указать функцию, которая будет выполняться после окончания анимационных эффектов. Указываю, а она почему-то выполняется сразу...

function callback(){
$("#cpanel").remove();
}
$("#cpanel").bind("dblclick", function () {
$(this).slideToggle(500, callback());
});

источник: http://jquery-docs.ru/Effects/slideToggle/#speedcallback

Gvozd
25.09.2010, 12:11
Указываю, а она почему-то выполняется сразу...
потому что ее вызываете и результат ее выполнения передаете вторым параметром в slideToggle

Kenshi25
25.09.2010, 12:36
Не понял, а как надо?

Gvozd
25.09.2010, 12:40
а немного подумать?

Kenshi25
25.09.2010, 13:33
Второй параметр это и есть функция, которая вызывается после выполнения анимации, а function callback(){} это просто объявление, а не выполнение, на самом деле багом попахивает)

sysya
25.09.2010, 15:37
Так вот slideToggle(500, function(){ callback() });

Gvozd
25.09.2010, 20:50
Второй параметр это и есть функция, которая вызывается после выполнения анимации
должен быть
но вы почему-то не передаете вторым параметром функцию

Kolyaj
25.09.2010, 21:23
sysya,
а зачем вы callback в анонимную функцию завернули?

sysya
26.09.2010, 04:54
sysya,
а зачем вы callback в анонимную функцию завернули?

Потому что так надо делать, как разработчик показывает http://api.jquery.com/slideToggle/

рони
26.09.2010, 04:55
$(this).slideToggle(500, callback());
function callback(){
$("#cpanel").remove();
}
$("#cpanel").bind("dblclick", function () {
$(this).slideToggle(500, callback);
});

либо
$("#cpanel").bind("dblclick", function () {
$(this).slideToggle(500,function(){$("#cpanel").remove()});
});

Kolyaj
26.09.2010, 08:42
Потому что так надо делать
Не надо так делать, точнее необязательно.