Метод jQuery .add - PullRequest
       1

Метод jQuery .add

2 голосов
/ 28 декабря 2010

Я пишу простой плагин jQuery, который отображает изображения с определенным классом в центре экрана (при нажатии, в натуральную величину) с серым наложением вокруг изображения. Когда мы нажимаем на оверлей, он исчезает. Теперь я использую этот кусок кода:

$("#overlay").click(function(){
        $(this).animate({
            opacity: "0"
        }, 500, function(){
            $(this).css({
                display: "none"
            });
        });

        $("#imgcontainer").animate({
            opacity: "0"
        }, 500, function(){
            $(this).css({
                display: "none"
            });

        });

    });

imgcontainer содержит наше изображение. Я пытался использовать этот более простой код, но он не работает:

$("#overlay").click(function(){
        $(this).add("#imgcontainer").animate({
            opacity: "0"
        }, 500, function(){
            $(this).css({
                display: "none"
            });
        });
    });

Почему это не работает?

UPDATE:
Правильный код:

$("#overlay").click(function(){
        $("#imgcontainer").add(this).fadeOut();
    });

Большое спасибо за ответы. Такое поведение (ошибка?) Действительно очень удивительно.

1 Ответ

3 голосов
/ 28 декабря 2010

Если вы используете v1.4.x из-за проблемы # 7853 , которую я только что поднял в их баг-трекере ранее сегодня (в какое время!). Вы можете исправить это, изменив это:

$(this).add("#imgcontainer").animate(...

в

$(this).add($("#imgcontainer")).animate(...

Обновление : Вот лучший (более эффективный) способ, как Ник указал ниже:

$("#imgcontainer").add(this).animate(...

(См. Также его заметку о fadeOut.)

В jQuery 1.3.2 и более ранних версиях это работало бы так, как вы ожидали. Я не знаю, является ли вещь 1.4.x ошибкой или преднамеренным несовместимым изменением.

Вопрос, хотя : Почему бы просто не исчезнуть из контейнера? Если оно содержит изображение, оно тоже должно исчезать, не так ли? Как в этом примере ? (Я не делаю много анимации, поэтому извиняюсь, если я пропустил что-то неуловимое.) Неважно, вы никогда не говорили, что # overlay было изображением, которое было неверным предположением с моей стороны.

...