Как восстановить элемент при остановке () анимации в jQuery? - PullRequest
0 голосов
/ 13 сентября 2011

Если пользователь решает удалить элемент, мое приложение запускает анимацию:

    $(data.args[0]).parents('li').hide(20000, function() {
        alert('the end')
    });

Если в середине пользователь нажимает кнопку паники, поскольку считает, что этот элемент не следует удалять, приложение останавливаетanimation:

    $(data.args[0]).parents('li').stop();

Проблема в том, что элемент все еще отображается, но он полупрозрачен.Как заставить его вернуться в исходное состояние?Я уже пытался соединить .fadein () и .show () безуспешно.Также проверены все комбинации параметров для .stop ()

Это оригинальный код:

$("#task-list").jstree({
    "plugins" : [ "themes", "ui", "html_data", "checkbox", "sort" ]
}).bind('check_node.jstree', function(e, data) {
    $(data.args[0]).parents('li').hide(10000, function() {
        var tid = this.id.split('-')[1];
        ajaxCall('delete_item', {id: tid})
    });
}).bind('uncheck_node.jstree', function(e, data) {
    $(data.args[0]).parents('li').stop(true, false);
});

Ответы [ 2 ]

0 голосов
/ 13 сентября 2011

В конце я решил проблему. Сначала я запускаю анимацию с помощью метода .animate ():

    $(data.args[0]).parents('li').animate({
        opacity: "hide"
    }, {
        queue: false,
        duration: 20000
    });

Затем мне пришлось использовать трюк, чтобы он заработал:

    $(data.args[0]).parents('li').stop().css('opacity', '1');

Обратите внимание, что примененная здесь CSS делает элемент таким, каким он был изначально.

0 голосов
/ 13 сентября 2011

При чтении руководстве кажется, что вы можете просто вызвать .stop () следующим образом:

$(data.args[0]).parents('li').stop(true, false).show();

для достижения эффекта. Очередь эффектов очищается, а все ожидающие эффекты отклоняются. Затем элемент отображается снова.

...