如何手动关闭 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 应用程序时如何运行一些代码?