0

我创建了一个简单的 div 元素,其中包含一个通知和一个用于切换元素的关闭按钮

jQuery('.float_close').click(function() {
                jQuery('.float_notice').fadeToggle('slow');

模态的

使用 cookie 将其关闭有多难?

4

2 回答 2

2

那么难,但我建议在jQuery之上为此使用一个额外的 JavaScript 插件( http://plugins.jquery.com/cookie/ ) 。

if ($.cookie('noticeVisibility') !== undefined
        && $.cookie('noticeVisibility') === 'hidden') {

    // If a cookie that stores the visibility
    // of the notice was set and it says 'hidden', hide the notice 
    jQuery('.float_notice').hide();
}

jQuery('.float_close').click(function () {
    jQuery('.float_notice').fadeToggle('slow');

    // Saves a cookie for later
    $.cookie('noticeVisibility', 'hidden');
});
于 2013-08-01T01:51:35.073 回答
1

您是否希望模式不再加载(或在某个指定的时间范围内),即使用户重新访问该页面?如果这就是你想要的,那么 cookie 是可以接受的,但并不理想;如果用户禁用了他们的 cookie,他们将不断地看到模态。

如果您想使用 cookie,您只需在 click 事件中设置它,并在触发模态(或绑定到最终触发模态的事件)之前检查它是否已设置。设置 cookie 非常简单(有关教程和一些功能,请参见http://www.quirksmode.org/js/cookies.html)。以下 cookie 将在一小时后过期(直接取自:How to set a cookie to expire in 1 hours in Javascript?)。

var now = new Date();
var time = now.getTime();
time += 3600 * 1000;
now.setTime(time);
document.cookie = 
    'username=' + value + 
    '; expires=' + now.toGMTString() + 
    '; path=/';

如果您希望在用户下次访问页面(或刷新页面)时显示模态,您可以将该信息存储在 javascript 中(或取消绑定触发模态的事件)。只需在您的 javascript 中设置一个布尔值(注意范围):

var modalDismissed = false;

并在您的点击事件中,将其设置为 true:

jQuery('.float_close').click(function() {
    jQuery('.float_notice').fadeToggle('slow');
    modalDismissed = true;
});

然后在弹出模态之前检查以确保 modalDismissed 为 false:

if (!modalDismissed) {
    // modal
}
于 2013-08-01T01:58:40.857 回答