2012-09-16 122 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 
} 

但我不會說怎麼好還是壞,這是。但它可能工作。