Я пишу простой плагин jQuery, который отображает изображения с определенным классом в центре экрана (при нажатии, полноразмер) с серым наложением вокруг изображения. Когда мы нажимаем на оверлей, оно исчезает. Теперь я использую этот фрагмент кода:jQuery .add method
$("#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();
});
Большое спасибо за ответы. Такое поведение (ошибка?) Действительно удивительно.
Существует еще более короткий способ: '.fadeOut()' устанавливает 'display: none' в конце, поэтому' $ ("# imagecontainer"). Add (this) .fadeOut() 'должен работать. +1 для проблемы, было бы +2 для подачи ошибок, если бы я мог. –
@Nick: Хороший вопрос о переупорядочении - более эффективный способ его исправить. И спасибо. :-) Я уже вытаскивал свои волосы раньше, когда я столкнулся с этим. –
J. - Я бы сказал, что в этот момент это было намеренно, так как «.add (селектор, контекст)» был добавлен, когда это сломалось ... поэтому он, вероятно, будет закрыт, как не ошибка –