2016-05-14 6 views
1

Я написал этот код для открытия всплывающего окна. Код ниже упоминается. Я установил cookie так, чтобы он открывался только один раз. У меня проблема, когда я нажимаю кнопку «Закрыть», cookie не настроен для всплывающего окна, чтобы он снова открывался.cookie не установлен при нажатии кнопки закрытия всплывающего окна

<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> 

Мой Jquery код выглядит следующим образом

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

Теперь я ahve возникает проблема только в то время как я установить таймаут для открытого диалогового окна моего OnClick событие не захватить, а близко всплывающее окно по рукопашной кнопке.

Я поставил предупреждающий ящик для одного и того же, но его щелчок на кнопке не является даже огнем или становится настолько тревожным, но в то время как я удаляю функцию тайм-аута, мое всплывающее окно работает нормально. даже его предупреждающий сигнал на кнопке закрытия.

руководство по осуществлению сделки для такой же.

ответ

2

Вы немедленно связываете событие click, но с помощью setTimeout для создания диалога. Таким образом, при связывании обработчика нет элемента .ui-button-icon-only.

Одним из решений является создание диалогового окна сразу, но используйте autoOpen: false, а затем откройте диалоговое окно в поле 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=/"; 
     }); 
    } 
}); 

Другим решением будет использование делегирования событий.

$(document).on("click", ".ui-button-icon-only", function() { 
    pageVisited = true; 
    document.cookie = "page_visited" + "=" + pageVisited + ";" + "path=/"; 
}); 
Смежные вопросы