Новый API jQuery, чтобы позволить синхронные операции во время цепочки? - PullRequest
2 голосов
/ 15 апреля 2011

Если я не ошибаюсь, начиная с jQuery 1.5, вы можете каким-то образом создать цепочку и вставить команду, чтобы она ожидала завершения предыдущей операции.Другими словами, вместо этого:

$('#something').animate({opacity: 0}, 500, function() { $('#something').hide(); });

Вы можете сделать:

$('#something').animate({opacity: 0}, 500).waitForIt().hide();

Конечно, я могу ошибаться.Я знаю, что есть функция delay () и опция «очередь» для animate (), но я думаю, что они применимы только к FX с очередями, а не к одному выстрелу, как show / hide.

Ответы [ 2 ]

2 голосов
/ 15 апреля 2011

Где вы нашли упоминание об этой функции? Насколько мне известно, даже jQuery 1.5 отложенные объекты не могут быть так легко использованы с animate () .

К счастью, Дэн Хеберден написал очень хороший код , который делает синтаксис более понятным. Используя его решение, вы можете написать что-то вроде:

var $something = your$('#something');
$.when($something.animate({opacity: 0}, 500)).done(function() {
    $something.hide();
});

Что, конечно, намного более многословно, чем просто передача обратного вызова на animate().

РЕДАКТИРОВАТЬ: jQuery 1.6 теперь реализует эту функцию изначально. Вы действительно можете сделать:

var $something = $('#something');
$.when($something.animate({opacity: 0}, 500)).done(function() {
    $something.hide();
});

Это все еще излишне для простых анимаций, но весьма полезно, если вы уже используете отложенные объекты и хотите включить анимацию в поток запросов AJAX.

1 голос
/ 15 апреля 2011

что может сделать это:

var animationTime = 500;
$('#something').animate({opacity: 0}, animationTime, function(){
    $(this).hide();
})

рабочая скрипка: http://jsfiddle.net/maniator/VbANC/32/

Функция, являющаяся последним параметром вызова animate, запускается только после завершения анимации.
Насколько мне известно, нет никакого waitForIt вызова.

я сделал плагин для задержки вызова jQuery:

http://jsfiddle.net/maniator/Ad3pv/

Назовите это так:

$('div').waitForit({
    function: 'hide', 
    timeOut: 1000
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...