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

全部,

如何手动关闭和打开 jgrowl

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

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

谢谢。

【问题讨论】:

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


    【解决方案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 一起使用。希望它对你有用。
                  猜你喜欢
                  • 1970-01-01
                  • 2014-12-10
                  • 2019-03-12
                  • 2012-08-29
                  • 1970-01-01
                  • 1970-01-01
                  • 2016-11-22
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多