Динамически вставленный / загруженный контент Jquery не будет плавно исчезать

У меня есть кусок Jquery, который сначала динамически вставляет div -

var contact_popup = '<div id="contact-popup" style="display: none; z-index:200; width: 400px; height: 400px;"></div>';
$('body').append(contact_popup);

А затем извлекает некоторый контент с другой страницы и вставляет его в div -

$('#contact-popup').load("contact/index.html #contact-content");

И затем исчезает, когда вы нажимаете ссылку на странице -

contact_item.click(function(){
    $('#contact-popup').fadeToggle(500);
    event.preventDefault();
}); 

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

Что я делаю неправильно?? Спасибо!

1 ответ

Я нашел решение.

Ключом является не выполнение анимации в оболочке, в которую вы загружаете контент, а в оболочке, которая загружается с внешней страницы.

Поэтому я создаю оболочку, стилизую ее и добавляю к телу:

var overlay_wrapper = '<div id="content-wrapper"></div>';
$('#content-wrapper').css({
    position: 'fixed',
    left: '0',
    top: '0',
    width: '100%',
    height: '100%', 
    zIndex: '4'
});
$('body').append(overlay_wrapper);

Затем я загружаю содержимое в эту оболочку по щелчку и постепенно добавляю div, загружаемый с другой страницы в методе.load.

contact_item.on('click', function(event) {
    event.preventDefault();
    $('#content-wrapper').load("/tinite/contact/index.html #contact-content", function() { 
        $('#contact-content').hide().fadeIn(1000);
    });
    history.pushState(null, null, 'contact');
}); 

(Спасибо Тамилу Сельвану за указание на то, что мне нужно определить событие). Я также добавляю "контакт" к текущему URL с history.pushState,

Я не совсем уверен, почему исчезает этот другой div, но он делает переход красивым и плавным. Надеюсь, что это может помочь кому-то еще.

Изменить - это только затухает содержание в нем. Чтобы скрыть контент, я помещу в него оператор if, который проверяет, виден ли контактный контент или нет, и меняет функцию щелчка в зависимости от этого.

Другие вопросы по тегам