2011-12-08 25 views
5

मेरे पास 3 divs (#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

क्या आपने कुकीज़ का उपयोग करने पर विचार किया है? 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('eventsFired', null); 
+0

यह पेज रीफ्रेश में काम नहीं करेगा (जो मुझे लगता है कि ओपी चाहता है, हालांकि यकीन नहीं है ...)। –

+0

@ फ़ेलिक्सक्लिंग आप सही हैं, इसलिए मैंने कुकीज़ के बारे में कुछ जोड़ा। मैं _was_ jQuery प्लगइन्स पेज से लिंक करने जा रहा हूं लेकिन यह वर्तमान में नीचे है: एस। वैसे भी धन्यवाद। –

+0

आपकी मदद के लिए सभी को धन्यवाद! क्या आप कुछ कुकी प्लगइन की सिफारिश कर सकते हैं, कृपया? –

1

वेब पृष्ठों है कि में राज्यविहीन हैं वे पृष्ठ रीफ्रेश के बीच राज्यों पकड़ नहीं है। जब आप पृष्ठ को फिर से लोड करते हैं तो इसमें कोई संकेत नहीं है कि अतीत में क्या हुआ है।

बचाव के लिए कुकीज़! आप क्लाइंट के ब्राउज़र पर चर स्टोर करने के लिए use Javascript (और jQuery has some nice plugins इसे आसान बनाने के लिए) कर सकते हैं। मास्क पर क्लिक होने पर कुकी को स्टोर करें, ताकि जब पृष्ठ अगली लोड हो जाए तो यह कभी नहीं दिखाता है।

0

के साथ इस कोड आप के लिए एकदम सही काम करेंगे और यह देता है जिन्हें आप एक खाली कार्य करने के लिए केवल एक बार

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

बस बिंदु पर अमल करने एक बार यह कहा जाता रहा है चाहता हूँ बाध्य करने के लिए jQuery द्वारा प्रदान की मानक तरीका है।

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

मैं इसे एक अज्ञात फ़ंक्शन के साथ करने का प्रयास कर रहा था, जो आपको ज़ोरदार स्थिति को बंद करने की आवश्यकता के रूप में बहुत अधिक लाइन लेता है। सोचो कि यह उतना सरल है जितना इसे प्राप्त हो सकता है। – Svend

संबंधित मुद्दे