2011-12-08 114 views
5

我已經3周的div(#Mask #Intro #Container),所以如果你點擊面膜,介紹被隱藏和容器出現。 的問題是,我只是希望加載這個只有一次,不是每一個我刷新頁面或任何時候,我點擊菜單或鏈接上的時間等調用函數只有一次

我怎樣才能做到這一點?

這是我用現在的腳本:

$(document).ready(function(){ 
    $("div#mask").click(function() { 
     $("div#intro").fadeToggle('slow'); 
     $("div#container").fadeToggle('slow'); 
     $("div#mask").css("z-index", "-99"); 
    }); 
}); 

謝謝!

+0

你有沒有考慮過使用cookies嗎? http://www.w3schools.com/js/js_cookies.asp – w00

回答

8

您可以嘗試使用一個簡單的計數器。

// count how many times click event is triggered 
var eventsFired = 0; 
$(document).ready(function(){ 
    $("div#mask").click(function() { 
     if (eventsFired == 0) { 
      $("div#intro").fadeToggle('slow'); 
      $("div#container").fadeToggle('slow'); 
      $("div#mask").css("z-index", "-99"); 
      eventsFired++; // <-- now equals 1, won't fire again until reload 
     } 
    }); 
}); 

要堅持你需要set a cookie。 (例如,如果使用該插件,則爲$.cookie())。

// example using $.cookie plugin 
var eventsFired = ($.cookie('eventsFired') != null) 
    ? $.cookie('eventsFired') 
    : 0; 

$(document).ready(function(){ 
    $("div#mask").click(function() { 
     if (eventsFired == 0) { 
      $("div#intro").fadeToggle('slow'); 
      $("div#container").fadeToggle('slow'); 
      $("div#mask").css("z-index", "-99"); 
      eventsFired++; // <-- now equals 1, won't fire again until reload 
      $.cookie('eventsFired', eventsFired); 
     } 
    }); 
}); 

要刪除cookie以後:

$.cookie('eventsFired', null); 
+0

這不會跨頁面刷新(我認爲這是任擇議定書想要什麼,不知道,雖然...)工作。 –

+0

@FelixKling你說得對,這就是爲什麼我加了一點關於cookies的原因。我想要鏈接到jQuery插件頁面,但它目前處於關閉狀態:S。不過謝謝。 –

+0

謝謝大家的幫助! 你能推薦一些cookie插件嗎? –

1

網頁是無國籍在他們不刷新頁面之間保持狀態。當你重新加載頁面時,它不知道過去發生了什麼。

餅乾來救援!您可以使用use Javascript(和jQuery has some nice plugins使其更容易)將變量存儲在客戶端的瀏覽器上。單擊掩碼時存儲cookie,以便下一次加載頁面時不會顯示。

0

這個代碼將工作適合你,它是由jQuery的提供綁定您想一旦它被稱爲只執行一次

$(document).ready(function(){ 
     $("div#mask").one('click', function() { 
      $("div#intro").fadeToggle('slow'); 
      $("div#container").fadeToggle('slow'); 
      $("div#mask").css("z-index", "-99"); 
     }); 
    }); 
4

只是指向一個空函數事件的標準方式。

var myFunc = function(){ 
    myFunc = function(){}; // kill it 
    console.log('Done once!'); // your stuff here 
}; 
+0

我試圖用一個未命名的功能,你需要關閉了隱式狀態,這需要很多更行做到這一點。認爲這是儘可能簡單的。 – Svend