2016-05-14 1 views
1

J'ai écrit ce code pour ouvrir la boîte popup. Le code est mentionné ci-dessous. J'ai mis un cookie pour qu'il ne s'ouvre qu'une seule fois. J'ai un problème pendant que je clique sur le bouton de fermeture cookie n'est pas défini pour le popup afin qu'il rouvre à chaque fois.cookie n'est pas défini lors du clic sur le bouton de fermeture du 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> 

Mon code Jquery est comme suit

$(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; 
    } 

Maintenant, j'ahve problème se produit uniquement lorsque j'ai mis le temps pour la boîte de dialogue Ouvrir mon événement onclick est capture pas en boîte de pop-up près, cliquez sur Fermer.

J'ai mis la boîte d'alerte pour le même mais son clic de bouton n'est même pas le feu ou devient si alerte est arrivé mais pendant que je vais enlever la fonction de temps d'arrêt ma popup fonctionne bien. même son alerte de capture sur le bouton de fermeture aussi.

veuillez guider pour cela.

Répondre

2

Vous liez immédiatement l'événement click, mais en utilisant setTimeout pour créer la boîte de dialogue. Il n'y a donc pas d'élément .ui-button-icon-only lorsque vous liez le gestionnaire.

Une solution consiste à créer la boîte de dialogue immédiatement, mais utilisez autoOpen: false, puis ouvrez la boîte de dialogue dans 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=/"; 
     }); 
    } 
}); 

Une autre solution consisterait à utiliser la délégation d'événement.

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