2012-09-16 119 views
0

好吧,我有一个菜单栏,可以从屏幕顶部切换下来。我只希望用户第一次看到这个网站。我如何防止它在每一个后续页面上播放?Jquery cookie只运行一次动画

我的jQuery:

$(function() { 

    $(".bar-top").delay(700).animate({ 
     marginTop: '0px' 
    }, 750, 'swing'); 


    if ($(".banner-title").css('display') == 'block') { 
     $(".banner-title").delay(1500).addClass("fade"); 
     $(".fade").fadeIn("slow"); 
     $(".fade").hide(); 
    } 

}); 

我看着设置cookie,但作为尚未空话工作正常。主要是因为我不知道如何将其包装在cookie中,如果语句。 banner-title只是一些与导航一起淡入的文字。

我在想有没有办法可能只在索引页上运行代码,并阻止它在其他地方运行?尽管如此,这可能不是一个好的解决方案。

回答

1

假设您的用户没有通过您的网站进行身份验证,在页面请求之间持续存在状态的唯一方法是设置Cookie。

有一个伟大的JavaScript API用于管理Cookie,你应该看看 - https://github.com/js-cookie/js-cookie

当用户点击你的网站,你可以检查你的cookie,看看他们是否已经有前。如果他们没有显示你的动画并设置cookie。如果他们没有运行动画。

从在js-cookie文档一目了然,你可以设置一个cookie 7天,像这样:

Cookies.set('visited', 'value', { expires: 7 }); 

所以你的代码可能是这样的:

// Make sure DOM has fully loaded before running code 
$(function(){ 
    if(! Cookies.get('visited')){ 
     // Your code here 
     Cookies.set('visited', 'yes', { expires: 7 }); 
    } 
}); 

编辑回答另一部分(感谢提醒Max Allen!)

要只在某些页面上运行代码,我建议有ID s(和类,如果你喜欢)在页面的body标签上。例如

if ($('body#index').length){ 
    // Code to only run on index page 
} 
+0

当我尝试执行此操作时出现错误。我认为这是因为我已经为我的代码获得了'if'声明。我需要把它变成一个变量或什么? – Doidgey

+0

它不应该有所作为。什么是错误? –

0

那么@Tim Fletcher回答了你的问题。

我在想有没有办法可能只在索引页上运行代码,并阻止它在其他地方运行?尽管如此,这可能不是一个好的解决方案。

那么有可能是一个解决办法:

if(window.location.pathname == '/index.html'){ 
//Your code 
} 

但我不会说怎么好还是坏,这是。但它可能工作。