如何手动关闭jgrowl

时间:2010-02-19 11:03:53

标签: jquery jquery-ui jquery-plugins jquery-selectors jgrowl

所有

如何手动关闭和打开jgrowl

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

上面的代码似乎不起作用。

感谢。

11 个答案:

答案 0 :(得分:9)

这对我有用

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

答案 1 :(得分: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');

其中任何一个都会关闭所有通知。不过,我不确定如何关闭个人通知。

答案 2 :(得分:2)

这个对我有用,关闭了最后一个通知:

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

编辑:通过用triggerHandler替换触发器来提高效率。见http://api.jquery.com/triggerHandler/

答案 3 :(得分:2)

我遇到了同样的问题,因为我在咆哮通知中添加了一组按钮。一个用于接受通知,另一个用于忽略通知。我采用的方法是添加一个afterOpen回调,然后添加一个click处理程序以及对原始close元素的引用:

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');
    });
}

答案 4 :(得分:1)

命名空间出现在事件之后..

所以它应该是

jQuery("div.jGrowl").trigger("close.jGrowl");
评论后

更新
他们的博客中提到的语法可能是一个错字..(你试过看它是否有用吗?)

除此之外,2009年2月的jquery插件页面上的支持请求可能包含更多见解..看看..

答案 5 :(得分:1)

最好的方法是

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

当jGrowl创建通知时,它用于创建两个jGrowl-notification DIV,其中一个为空。因此,当您创建通知时,最后一个是最新通知。所以你需要用jGrowl-notification类关闭最后一个DIV。

如果您只想打开单个音符,请使用以下代码,这将删除之前的音符并创建一个新音符

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

$.jGrowl("Hello World");

答案 6 :(得分:1)

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

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

是关闭通知的最佳方式,因为所有回调都会被相应触发。

删除模式会绕过回调,这不太理想。另请注意,要关闭特定通知,您需要使用上述选择器。

$.fn.jGrowl()方法调用旨在与jQuery.UI的小部件方法并行,并且已经变得相当普遍,我很可能会在将来的版本中保留它。

答案 7 :(得分: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

答案 8 :(得分: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);

答案 9 :(得分:0)

使用单击功能并捕获事件以关闭当前通知。 例如:

$.jGrowl('Hi, It's a clickable close notification', {
      click: function(e, m, o) {
        $(e).jGrowl("close");
      }
    });

此处 e 表示事件,消息表示 m ,而 o 表示选项。

检查this了解更多详细信息。

注意:使用最新的jgrowl lib 1.3或更高版本。

答案 10 :(得分:-1)

$('#jGrowl').find('.jGrowl-close').trigger('click');