2016-05-14 2 views
1

Ich habe diesen Code für Popup-Box zu öffnen. Code ist unter Erwähnung. Ich habe Cookie gesetzt, damit es nur einmal geöffnet wird. Ich habe ein Problem, während ich auf die Schaltfläche zum Schließen klicke Cookie ist nicht für das Popup eingestellt, so dass es jedes Mal wieder öffnen.Cookie ist nicht eingestellt, während auf Klick auf Schließen Schaltfläche Popup

<div id="abcPopup"> 
    <div id="popup-title"> 
     Hello 
    </div> 
    <div id="description"> 

    </div> 
    <div id="picture"> 

    </div> 

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

Mein JQuery-Code ist als

$(document).ready(function() { 
     var pageVisitedcookiesValue = getCookie("page_visited"); 
     if (pageVisitedcookiesValue == null || pageVisitedcookiesValue != "true") { 
      var pageVisited; 
      setTimeout(function() { 
       $("#abcPopup").dialog({ 
        show: { effect: 'fade', duration: 450 }, 
        hide: { effect: 'fade', duration: 450 } 
       }); 
      }, 3000);    
      $('.ui-button-icon-only').click(function() { 

       pageVisited = true; 
       document.cookie = "page_visited" + "=" + pageVisited + ";" + "path=/"; 
      }); 
     } 
    }); 

function getCookie(c_name) { 
     var c_value = document.cookie; 
     var c_start = c_value.indexOf(" " + c_name + "="); 
     if (c_start == -1) { 
      c_start = c_value.indexOf(c_name + "="); 
     } 
     if (c_start == -1) { 
      c_value = null; 
     } 
     else { 
      c_start = c_value.indexOf("=", c_start) + 1; 
      var c_end = c_value.indexOf(";", c_start); 
      if (c_end == -1) { 
       c_end = c_value.length; 
      } 
      c_value = unescape(c_value.substring(c_start, c_end)); 
     } 
     return c_value; 
    } 

Nun folgt ahve i Problem nur auftreten, während ich Zeit für offenes Dialogfeld meines Onclick-Ereignis während schließen Popup-Fenster nicht auf Schließen-Schaltfläche klicken erfassen gesetzt.

Ich habe Alarm-Box für die gleiche, aber seine Schaltfläche klicken ist nicht einmal Feuer oder erhalten so Alarm ist, passieren, aber während ich Set Time Out-Funktion entfernen wird mein Popup funktioniert gut. sogar seine Fangwarnung bei Schließen-Taste auch.

bitte führen Sie für die gleichen.

Antwort

2

Sie binden das Ereignis click sofort ein, aber verwenden setTimeout, um das Dialogfeld zu erstellen. Es gibt also kein .ui-button-icon-only Element, wenn Sie den Handler binden.

Eine Lösung besteht darin, den Dialog sofort zu erstellen, aber verwenden Sie autoOpen: false, und öffnen Sie dann den Dialog in der setTimeout.

$(document).ready(function() { 
    var pageVisitedcookiesValue = getCookie("page_visited"); 
    if (pageVisitedcookiesValue == null || pageVisitedcookiesValue != "true") { 
     var pageVisited; 
     $("#abcPopup").dialog({ 
      autoOpen: false, 
      show: { effect: 'fade', duration: 450 }, 
      hide: { effect: 'fade', duration: 450 } 
     }); 
     setTimeout(function() { 
      $("#abcPopup").dialog("open"); 
     }, 3000);    
     $('.ui-button-icon-only').click(function() { 

      pageVisited = true; 
      document.cookie = "page_visited" + "=" + pageVisited + ";" + "path=/"; 
     }); 
    } 
}); 

Eine andere Lösung wäre Ereignisdelegierung zu verwenden.

$(document).on("click", ".ui-button-icon-only", function() { 
    pageVisited = true; 
    document.cookie = "page_visited" + "=" + pageVisited + ";" + "path=/"; 
}); 
Verwandte Themen