обратный вызов jQuery, не ожидая на постепенном исчезновении

ArrayList remove() опирается на реализацию объектов метода Equal. Если реализация не была выполнена, то объект удаляется реализацией Object из Equals, которая действительно является сравнением указателя.

Из документации по ArrayList -

Более формально удаляется элемент с наименьшим индексом i такой, что (o==null ? get(i)==null : o.equals(get(i))) (если такой элемент существует)

Object equal документация к методу -

Метод equals для класса Object реализует максимально различающее возможное отношение эквивалентности на объектах; то есть для любых ненулевых ссылочных значений x и y этот метод возвращает истину тогда и только тогда, когда x и y ссылаются на один и тот же объект (x == y имеет значение true).

6
задан Stephane 5 November 2009 в 04:06
поделиться

1 ответ

Хорошо, мне удалось воспроизвести вашу проблему, см. Пример на http://jsbin.com/ocaha .

Что происходит, так это то, что jQuery может видеть, что ваш пустой не нужно убирать. Поэтому он считает анимацию выполненной и выполняется в течение 0 мс вместо ожидаемых 4000 мс. Таким образом, он немедленно начинает исчезать во всех всех из .adds .

Чтобы предотвратить такое поведение, я бы отфильтровал все пустые элементы из выделения. Примерно так:

$(document).ready(function() {
   $(".remove")
               .filter(function(){ return ! $(this).is(":empty"); })
               .fadeOut(4000, function(){
     $(".add").fadeIn(5000);
   });
});

См. Рабочий пример на http://jsbin.com/ovivi .

10
ответ дан 8 December 2019 в 18:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: