JQuery – 每个会话运行一次
我有一个由“计算”按钮触发的function
我需要这一行每个会话只运行一次(会话可能是1天或重新加载浏览器)。
$('.popup-with-form').magnificPopup('open');
这将打开一个Magnific Popup。 一旦执行此function(弹出窗口打开),如果再次按下“计算”按钮,我不想再次打开弹出窗口。
JS / JQuery代码:
function StateChanged() { if (XmlHttp.readyState == 4 || XmlHttp.readyState == "complete") { $('.popup-with-form').magnificPopup('open'); document.getElementById("CalcSum").innerHTML = XmlHttp.responseText; document.getElementById("CalcSumPopup").innerHTML = XmlHttp.responseText; } }
PS我知道很多这些问题都出现了,我尝试了不同的做事方式,但由于我是“代码挑战”并且不了解JQuery或JS我无法理解。 我知道JQuery中有一个“东西”,但不明白如何使它工作。
我真的很赞赏任何帮助。 谢谢!
更新 @MarcoBonelli回答的问题 – 谢谢!
工作方案:
if (!sessionStorage.alreadyClicked) { $('.popup-with-form').magnificPopup('open'); sessionStorage.alreadyClicked = "true"; }
如果您只想在每个浏览器会话中执行此行一次,则可以使用sessionStorage
。 当您在sessionStorage
上设置变量时,它会保持其值直到浏览器关闭(例如,直到您关闭Google Chrome)。
所以你可以这样做:
if (!sessionStorage.alreadyClicked) { $('.popup-with-form').magnificPopup('open'); sessionStorage.alreadyClicked = 1; }
注意sessionStorage
因为它只能存储string
值。
如果您希望每个页面会话只执行一次该行(这意味着每次页面刷新一次),那么您可以使用任何变量并将其设置为true以记住您已执行该行:
if (!window.alreadyClicked) { $('.popup-with-form').magnificPopup('open'); alreadyClicked = true; }
尝试
编辑,v2
我读到了.one但是无法弄明白:( ……我实际上只需按下CALCULATE按钮就可以运行一次。 – 屋面计算器
HTML
JS
$("#formcalc > input[name='calculate']") .one("click", function(e) { e.stopPropagation(); GetInfo(); });
V1
$("a.popup-with-form").one("click", function(e) { // do stuff, once // ieg, // `XmlHttp.onreadystatechange = StateChanged;` at `ShowSum()` $(e.target).remove(); // remove element when `click`ed once });
jsfiddle http://jsfiddle.net/guest271314/7K3tn/
见http://api.jquery.com/one/
请在下方使用。
disableOn
空值
如果窗口宽度小于此选项中的数字 – 将不会打开灯箱,并且将触发元素的默认行为。 设置为0以禁用行为。 选项仅在从DOM元素初始化Magnific Popup时有效。
也可以接受Function作为参数,如果可以打开lightbox则返回true,否则返回false。 例如:
disableOn:function(){if($(condition){return false;} return true;}