2011-12-08 64 views
5

Ben 3 divs (#Mask #Intro #Container) var, bu yüzden Maske'yi tıklarsanız, Intro gizlenir ve Container görüntülenir. Sorun şu ki sadece sayfayı bir kez yüklemek istiyorum, sayfayı her yenilediğimde veya menü veya bağlantıyı tıklattığımda her zaman değil.Sadece bir kez işlev çağırın

Bunu nasıl yapabilirim?

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

teşekkür ederiz:

Bu

şimdilik kullanıyorum script!

+0

Çerezleri kullanmayı düşündünüz mü? http://www.w3schools.com/js/js_cookies.asp – w00

cevap

8

Basit bir sayaç kullanmayı deneyebilirsiniz. için

// 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 
     } 
    }); 
}); 

bu set a cookie gerekecektir inat. (ör. bu eklentiyi kullanırsanız $.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); 
     } 
    }); 
}); 

sonradan çerezi silmek için:

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

Bu, sayfa yenilemelerinde çalışmaz (OP'nin istediği şey olduğunu düşünüyorum, emin değilim ...). –

+0

@FelixKling Haklısınız, bu yüzden çerezleri biraz ekledim. JQuery eklentileri sayfasına bağlanacağım, ancak şu an: S. Yine de teşekkürler. –

+0

Yardımlarınız için hepinize teşekkür ederiz! Bazı çerez eklentilerini önerir misiniz, lütfen? –

1

Web sayfaları onlar Sayfa yenilemeleri arasında devletleri tutmayın ki vatansız bulunmaktadır. Sayfayı yeniden yüklediğinizde geçmişte neler olduğuna dair bir ipucu yoktur.

Kurtarma için çerezler! Değişkenleri istemci tarayıcısında saklamak için use Javascript (ve jQuery has some nice plugins'u daha kolay hale getirebilirsiniz) yapabilirsiniz. Maske tıklandığında bir çerez saklayın, böylece sayfa bir sonraki yüklendiğinde asla gösterilmez.

0

ile bu kod sizin için mükemmel çalışır ve bunu, ona denilen edildikten sonra boş bir işleve sadece bir kez

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

Hemen noktasını yürütmek istedikleri etkinlikleri bağlamak için jquery tarafından sağlanan standart bir yoldur.

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

Bunu örtülü bir durumla kapatmaya ihtiyaç duyduğunuzda daha fazla satır alan isimsiz bir işlevle yapmaya çalıştım. Bunun olabildiğince basit olduğunu düşün. – Svend