Делегирование триггера jQuery, как только оно создано - PullRequest
1 голос
/ 19 августа 2011

Я пытаюсь создать автоматически исчезающее окно уведомлений, окно уведомлений загружается через ajax, поэтому я не могу использовать $(document).ready();.

Я нашел отличную функцию .delegate(), которую я используюэкстенсивно, поэтому в основном теперь ajax создает новый <div class="fade">Stupid monkey!</div>, и я хотел бы, чтобы он исчез через 2 секунды на основе определения класса, вот что я получил до сих пор:

// ajax request handler
jQuery('#message').append('<div class="fade">Stupid monkey!</div>');

jQuery('body').delegate('.fade', eventType, function()
{
    jQuery(this).delay(2000).slideUp(500, function()
    {
        jQuery(this).remove();
    });
});

Что бы я низамените eventType на «Я не могу запустить свой обработчик сразу после создания элемента».Я пробовал ready, load и все виды альтернатив ... click работает, но это не то, что мне нужно, и я не могу вызвать click на анонимном div.

1 Ответ

1 голос
/ 19 августа 2011
jQuery('body').delegate('.fade', eventType, function()
{
    jQuery(this).delay(2000).slideUp(500, function()
    {
        jQuery(this).remove();
    });
});

jQuery('<div class="fade">Stupid monkey!</div>').appendTo("#message").trigger(eventType);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...