2010-02-19 2 views

ответ

1

Пространство имен приходит после того, как событие ..

поэтому она должна быть

jQuery("div.jGrowl").trigger("close.jGrowl"); 

обновление после комментария
Синтаксис упоминается в своем блоге может быть опечатка .. (вы попробовали, чтобы убедиться, что он работает?)

Другое t хань, что запрос на поддержку на странице JQuery плагинов от фев 2009 может содержать еще некоторое понимание .. посмотрим ..

+0

@Gaby: > [По] (Http: //www.stanlemon .netindex.jgrowl.html) к этому это, как я сказал – Hulk

+0

странный .. возможно, это опечатка ... вы попробовали? –

+0

да он не работает .. – Hulk

2

Три варианта:

$('div.jGrowl').find('div.jGrowl-notification').children().parent().remove(); 

$('div.jGrowl').find('div.jGrowl-notification').trigger('jGrowl.close'); 

$('div.jGrowl').find('.jGrowl-close').trigger('jGrowl.close'); 

Любой из них закрыть все уведомления. Однако я не знаю, как закрыть индивидуальное уведомление.

9

Это работало для меня

$("div.jGrowl").jGrowl("close"); 
+0

Этот синтаксис, по-видимому, больше не работает. Все, что он сделал для меня, был pop another jGrowl с сообщением «close» – Kristopher

+0

Это все еще работает для меня для последней версии – Arda

0

Вот решение, чтобы закрыть отдельные уведомления:

testGrowl = function() { 
var ao, close; 
close = function(e) { 
    console.log('close'); 
    return $(e).find('.jGrowl-close').trigger('click'); 
}; 
ao = function(e) { 
    return setTimeout(function() { 
    return close(e); 
    }, 1500); 
}; 
return $.jGrowl("Hello world!", { 
    sticky: true, 
    afterOpen: ao 
    }); 
}; 
setTimeout(testGrowl, 100); 
setTimeout(testGrowl, 1000); 

CoffeeScript and dialog here.

0

Вот еще одно решение для открытия и закрытия отдельных сообщений, которые используют jGrowl в функции группировки:

var nextGroupID = 1; 

var addMessage = function(message) 
{ 
    var groupID = nextGroupID++; 
    $.jGrowl(message, { sticky: true, group: "group-" + groupID }); 
    return groupID; 
}; 

var removeMessage = function(groupID) 
{ 
    $("div.jGrowl-notification.group-" + groupID).trigger("jGrowl.close"); 
} 

// Example usage 
addMessage("The first test message"); 
var testID = addMessage("The second test message"); 

setTimeout(function() {removeMessage(testID);}, 4000); 
1

Лучший метод

$(".jGrowl-notification:last-child").remove(); 

Когда jGrowl создать уведомление его использует для создания два jGrowl-уведомления DIV, где один пуст. Поэтому, когда вы создаете уведомление, последнее является последним уведомлением. Поэтому вам нужно закрыть последний DIV с помощью класса jGrowl-notification.

Когда бы вы хотели открыть только одна нота использовать следующий код, который удалит предыдущую ноту и создать новый один

$(".jGrowl-notification:last-child").remove(); 

$.jGrowl("Hello World"); 
1

$(".jGrowl-notification:last-child").jGrowl('close');

или

$(".jGrowl-notification:last-child").trigger('jGrowl.close')

Являются наилучшими способами закрыть уведомление, так как все обратные вызовы будут инициированы соответствующим образом.

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

Метод вызова $.fn.jGrowl() предназначен для параллельного подхода виджета jQuery.UI и стал довольно распространенным местом, и я, скорее всего, сохраню его в будущих выпусках.

2

Это один работал для меня, закрытия последнего уведомления:

$('div.jGrowl-close').triggerHandler('click'); 

Edit: Повышение эффективности путем замены триггера с triggerHandler. См. http://api.jquery.com/triggerHandler/

2

У меня была такая же проблема, потому что я добавлял набор кнопок в уведомление о рычаге. Один из них использовался для принятия уведомления, а другой использовался для игнорирования уведомления. Подход, который я взял был добавить afterOpen обратный вызов, а затем добавить click обработчик со ссылкой на оригинальный близкий элемент:

afterOpen: function(e,m,o){ 
    $(e).find("#acceptInvitation").click(function() { 
     alert("Invite Accepted"); 
    }); 
    $(e).find("#declineInvitation").click(function() { 
     $(e).children("div.jGrowl-close").trigger('click'); 
    }); 
} 
-1
$('#jGrowl').find('.jGrowl-close').trigger('click'); 
+1

Пожалуйста, добавьте описание для yuor answer – zohar

Смежные вопросы