【问题标题】:Jquery notification event firing twiceJquery 通知事件触发两次
【发布时间】:2018-05-10 14:50:31
【问题描述】:

我刚开始使用 grutter 通知插件并遇到奇怪的行为。我在页面加载时显示通知,出于某种原因,相同的消息出现了两次。如果有人可以检查我的代码并突出显示我忽略的任何错误,我将不胜感激。该插件的链接是:http://boedesign.com/blog/2009/07/11/growl-for-jquery-gritter/。非常感谢。

从 FIREBUG 更新的 HTML

<div id="gritter-notice-wrapper">

    <div id="gritter-item-2" class="gritter-item-wrapper" role="alert" style="">
        <div class="gritter-top"></div>
        <div class="gritter-item">
            <a class="gritter-close" tabindex="1" href="#" style="display: none;">

                Close Notification

            </a>
            <div class="gritter-without-image">
                <span class="gritter-title">

                    New Message

                </span>
                <p>

                    You have  

                    <span class="yourstyle">

                        1

                    </span>

                     new message(s). Please go to the message area in …

                </p>
            </div>
            <div style="clear:both"></div>
        </div>
        <div class="gritter-bottom"></div>
    </div>


    <div id="gritter-item-3" class="gritter-item-wrapper" role="alert" style="">
        <div class="gritter-top"></div>
        <div class="gritter-item">
            <a class="gritter-close" tabindex="1" href="#">

                Close Notification

            </a>
            <div class="gritter-without-image">
                <span class="gritter-title">

                    New Message

                </span>
                <p>

                    You have  

                    <span class="yourstyle">

                        1

                    </span>

                     new message(s). Please go to the message area in …

                </p>
            </div>
        </div>
        <div class="gritter-bottom"></div>
    </div>

</div>  


<div id="messages" style="float: left;height: 220px">
     <div>
       Messages
     </div>
     <div style="overflow: hidden;">
        <div id="message"style="font-size: 11px; padding: 10px 10px;" >

            <?php

                mysql_select_db($database_domain, $domain); 
                $query1 = "SELECT * FROM messages WHERE to_user = '$_SESSION[kt_name_usr]' AND `read` = 1"; 
                $result1 = mysql_query($query1) or die(mysql_error());
                $totalRows1 = mysql_num_rows($result1);
                if (mysql_num_rows($result1) ==0) {
                $error1 = true;
                $message3 = "You have no new messages.";
                } else {
                // There was a result
                // now check if there were any records.
                    if (mysql_num_rows($result1) >0) {    
                        $error1 = false;
                        $messages1 = "You have" . "  " . "<span class='yourstyle'>" . $totalRows1 . "</span>" . " " . "new message(s). Please go to the message area in your control panel."; 
                  }
                 } 

                 if($error1 == 0)  {

                    echo "You have" . "  " . "<span class='yourstyle'>" . $totalRows1 . "</span>" . " " . "new message(s). Please go to the message area in your control panel.";

                    echo "<SCRIPT type=text/javascript>\n";
                    echo "$(function() {\n";
                    echo "$(\"#testid\" ).show()\n";
                    echo "$.gritter.add({title: 'This is a notice', text: \"".$messages1."\"})\n";
                    echo "});\n";
                    echo "</script>\n";

                } else { 

                    echo 'There are no new system or site messages to display.';

                }

             ?>

            </div>

           </div>

          </div>

          <div id="testid" style="display:none;"></div>

解决方案:

<script type="text/javascript">
       $(function () {
            var newmsg = <?php echo json_encode($messages1) ?>;
            $.gritter.add({title: 'New Message', text: newmsg, time: 4000, sticky: false});
    });
</script>

【问题讨论】:

  • 我在页面加载时没有找到任何通知。也许你可以提供一个小提琴?
  • @theScorpion fiddle 不接受 php 标记。谢谢

标签: javascript jquery gritter


【解决方案1】:

只需注释掉这一行,

echo "You have" . "  " . "<span class='yourstyle'>" . $totalRows1 . "</span>" . " " . "new message(s). Please go to the message area in your control panel.";

【讨论】:

  • 嗨阿普尔。还是一样。发射两次。谢谢
  • 请分享在浏览器中呈现的页面视图源。
  • 消息
  • 应该还有一些js/css。我需要执行后生成的完整 html 代码。如果这是ajax的响应,请与我分享发起者页面html代码。
  • 如果我在ff中右键查看源代码,我可以标记代码。我应该寻找什么。 css/js 可从我发布的链接中获得。还有,有想法。难道是它在冒泡,我可能需要停止传播?谢谢
【解决方案2】:

stopImmediatePropagation() 解决了同样的问题

尝试使用以下代码

    <script type="text/javascript">
       $(function (event) {
            event.stopImmediatePropagation();
            var newmsg = <?php echo json_encode($messages1) ?>;
            $.gritter.add({title: 'New Message', text: newmsg, time: 4000, sticky: false});
    });
</script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-06
    • 2013-01-22
    • 1970-01-01
    • 1970-01-01
    • 2013-09-06
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多