单击弹出窗口的关闭按钮时未设置cookie

时间:2016-05-14 07:11:49

标签: jquery nopcommerce

我已经为打开的弹出框编写了这段代码。代码如下。我已经设置了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;
    }

现在我的问题只发生在我为打开的对话框设置超时时我的onclick事件没有捕获而关闭按钮单击时关闭弹出框。

我已将警报框设置为相同,但其按钮点击甚至不是火或得到如此警报发生但我将删除设置超时功能我的弹出窗口工作正常。甚至它也会在关闭按钮上发出警报。

请指导相同。

1 个答案:

答案 0 :(得分: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=/";
});