如何手动关闭 jgrowl

Posted

技术标签:

【中文标题】如何手动关闭 jgrowl【英文标题】:How to close a jgrowl manually 【发布时间】:2011-01-18 17:47:10 【问题描述】:

全部,

如何手动关闭和打开 jgrowl

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

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

谢谢。

【问题讨论】:

【参考方案1】:

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

应该是这样的

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

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

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

【讨论】:

@Gaby: > According 这就是我所说的 奇怪..也许是错字...你试过了吗?【参考方案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');

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

【讨论】:

【参考方案3】:

这对我有用

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

【讨论】:

这种语法显然不再适用了。它对我所做的只是弹出另一个带有“关闭”消息的 jGrowl【参考方案4】:

以下是关闭单个通知的解决方案:

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.

【讨论】:

【参考方案5】:

这是另一种使用 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);

【讨论】:

【参考方案6】:

最好的方法是

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

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

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

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

$.jGrowl("Hello World");

【讨论】:

【参考方案7】:

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

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

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

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

$.fn.jGrowl() 方法调用旨在与 jQuery.UI 的小部件方法并行,并且已成为相当普遍的地方,我很可能会在未来的版本中保持这一点。

【讨论】:

【参考方案8】:

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

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

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

【讨论】:

【参考方案9】:

我遇到了同样的问题,因为我在咆哮通知中添加了一组按钮。一个用于接受通知,另一个用于忽略通知。我采用的方法是添加一个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');
    );

【讨论】:

【参考方案10】:
$('#jGrowl').find('.jGrowl-close').trigger('click');

【讨论】:

请在您的回答中添加描述【参考方案11】:

使用点击函数并捕获事件来关闭当前通知。 例如:

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

这里e指事件,m指消息,o指选项。

查看this了解更多详情。

注意:使用最新的 jgrowl lib 1.3 以上。

【讨论】:

您只需要运行您的 sn-p 即可查看错误。 嗨,Armel,很抱歉为您提供方便。这只是一个例子。将此示例 (github.com/stanlemon/jGrowl/tree/master/examples) 与我的 sn-p 一起使用。希望它对你有用。

以上是关于如何手动关闭 jgrowl的主要内容,如果未能解决你的问题,请参考以下文章

如何手动发出 http/https POST 请求? [关闭]

当用户手动关闭 react-native-ios 应用程序时如何运行一些代码?

如何使用 Python 与 z/OS 服务交互以自动化手动流程 [关闭]

Java - 如何使用密码短语手动加密数据? [关闭]

pd虚拟机中如何手动分配内存?

如何手动重启 Jenkins?