2016-05-14 3 views
1

私は開いているポップアップボックスのためにこのコードを書いています。コードは以下のとおりです。私は一回だけ開くようにクッキーを設定しました。クローズボタンをクリックしているときに問題が発生しました。クッキーがポップアップに設定されていないため、毎回再オープンします。ポップアップのクローズボタンをクリックしているときにクッキーが設定されていません

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

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

を次のように私のjqueryのコードがある今、私は私のonclickイベントは、閉じるボタンをクリックしたときに、近いポップアップボックスながらキャプチャされていない開いているダイアログボックスのタイムアウトを設定している間にのみ生じる問題をahve。

私は同じように警告ボックスを置いていますが、ボタンのクリックも火災ではないので、警告が表示されますが、設定時間切れ機能を使用するとポップアップが正常に機能します。閉じるボタンでのキャッチアラートも。

同じようにご案内ください。

答えて

2

すぐにclickイベントをバインドしていますが、setTimeoutを使用してダイアログを作成しています。したがって、ハンドラをバインドするときには、.ui-button-icon-only要素はありません。

解決策の1つは、すぐにダイアログを作成することですが、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=/"; 
     }); 
    } 
}); 

もう1つの解決策は、イベント委任を使用することです。

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