Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Это баг или я что-то непонимаю? (https://javascript.ru/forum/jquery/12001-ehto-bag-ili-ya-chto-neponimayu.html)

Kenshi25 25.09.2010 11:55

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

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


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

Gvozd 25.09.2010 12:11

Цитата:

Сообщение от Kenshi25
Указываю, а она почему-то выполняется сразу...

потому что ее вызываете и результат ее выполнения передаете вторым параметром в 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

Цитата:

Сообщение от Kenshi25
Второй параметр это и есть функция, которая вызывается после выполнения анимации

должен быть
но вы почему-то не передаете вторым параметром функцию

Kolyaj 25.09.2010 21:23

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

sysya 26.09.2010 04:54

Цитата:

Сообщение от Kolyaj (Сообщение 71946)
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()});
});


Часовой пояс GMT +3, время: 08:59.