2011-12-08 68 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