2012-02-03 12 views
5

इस सप्ताह मैंने एक कस्टम वर्डप्रेस साइडबार.एफपी फ़ाइल में एक संक्षिप्त मेनू को नियंत्रित करने के लिए कुछ jquery (यह मेरी पहली बार jquery के साथ काम कर रहा है) को शोध और रख दिया है। कस्टम टैक्सोनोमी और कस्टम सॉर्ट ऑर्डर इत्यादि द्वारा कस्टम पोस्ट प्रकारों को चुनने और क्रमबद्ध करने के लिए wp_query का उपयोग करके मेनू गतिशील रूप से जेनरेट किया गया है (इसलिए कोई प्लगइन समाधान नहीं है)।मेरी jquery कुकीज़ एकाधिक पृष्ठों में क्यों उपलब्ध नहीं हैं?

मैं अपने मेनू अनुभागों की विस्तृत/पतन स्थिति को बनाए रखना चाहता हूं क्योंकि साइट विज़िटर सामग्री पर नेविगेट करते हैं। Jquery का उपयोग करके ऐसा लगता है कि मैं ब्राउज़र में अद्वितीय कुकी नाम सफलतापूर्वक लिख रहा हूं, और ऐसा प्रतीत होता है कि मैं अपने टैग के "विस्तारित" या "ध्वस्त" वर्ग मानों को सफलतापूर्वक पारित कर रहा हूं।

हालांकि, कुकीज़ कई पृष्ठों पर काम नहीं करती है - यदि आप किसी अन्य पृष्ठ पर नेविगेट करते हैं, तो जब तक आप मेनू आइटम पर क्लिक नहीं करते हैं तब तक कोई भी नई कुकी सेट नहीं होती है। यदि आप बैक ब्राउज़र पर क्लिक करते हैं और पिछले पृष्ठ पर वापस जाते हैं, तो पिछले पृष्ठ पर सेट की गई आपकी कुकीज अभी भी सेट है (जो अच्छी है)। ध्यान दें कि जब किसी नए पृष्ठ पर नेविगेट किया जाता है तो मेनू पुन: उत्पन्न होता है, लेकिन मेनू सामग्री शायद ही कभी बदलती है (इसलिए आईडी स्थिर हैं) और कुकीज़ केवल वर्तमान सत्र के लिए हैं (और अभी भी पिछले पृष्ठ से अधिक होनी चाहिए) ।

मैंने PHP कुकीज़ सेट करने के साथ प्रयोग किया है, और वे पृष्ठ से पृष्ठ पर अच्छी तरह से पकड़ते हैं। लेकिन मेरी jquery कुकीज़ पृष्ठ-विशिष्ट प्रतीत होती है, इसलिए मैं कुछ गलत कर रहा हूं।

यहाँ jQuery कोड है कि मेरे पीएचपी पेज में प्रकट होता है मेनू को नियंत्रित करने और अपनी कुकी लिखने के लिए है (ध्यान दें: मैं jquery.cookie.js प्लगइन को जोड़ने हूँ):

 <script type="text/javascript"> 
     $(document).ready(function() { 
      setTimeout(function() { 
       $('#port-menu > li > a.expanded + ul, #port-menu > li ul li > a.collapsed + ul').slideToggle('medium'); 
       $('#port-menu > li > a').click(function() { 
        $(this).toggleClass('expanded').toggleClass('collapsed').parent().find('> ul').slideToggle('medium'); 
        var vartag = $(this).get(0).tagName.toLowerCase(); 
        var varclass = $(this).attr('class'); 
        var cookiename = $(this).parent().attr('id'); 
        $.cookie(cookiename, $(this).attr('class')); 
       }); 
       $('#port-menu > li ul li > a').click(function() { 
        $(this).toggleClass('expanded').toggleClass('collapsed').parent().find('> ul').slideToggle('medium'); 
        var vartag = $(this).get(0).tagName.toLowerCase(); 
        var varclass = $(this).attr('class'); 
        var vargenre = $(this).parent().parent().parent().attr('id'); 
        var varoutlet = $(this).parent().attr('id'); 
        var cookiename = vargenre + varoutlet; 
        $.cookie(cookiename, $(this).attr('class')); 
       }); 
      }, 250); 
     }); 
    </script> 

एक उदाहरण के रूप

genre2:, डायनामिक रूप से तैयार कुकी के नाम और मान कुछ इस तरह दिखाई ढह

genre3: विस्तार

genre1outlet2: विस्तार

genre2outlet3: विस्तार

genre2outlet4: विस्तार

ऊपर उल्लेख किया है, मैं jQuery के लिए नया हूँ। मैं कुकीज़ का उपयोग करने के लिए भी नया हूँ। किसी भी तरह की सहायता का स्वागत किया जाएगा।

पीएस एक बार जब मैं यह काम कर लेता हूं, मुझे नहीं पता कि कुकीज़ की मेरी सरणी से जानकारी कैसे प्राप्त करें और कक्षाओं को मेरे मेनू में लागू करें - लेकिन यह एक अलग मुद्दा है।

+0

पथ को सेट करें/और यह – machineaddict

उत्तर

17

मुझे लगता है कि आपको पथ निर्दिष्ट करने का प्रयास करना चाहिए। यह इस तरह दिख सकता है:

$.cookie(cookiename, $(this).attr('class'), { path: '/' }); 

फिर जब आप कुकी सेट करते हैं तो यह सभी वेबसाइटों के लिए उपलब्ध होगा। डिफ़ॉल्ट पथ उपपृष्ठ का पथ है जो कुकी सेट करता है। उस मामले में कुकी केवल उस उपपृष्ठ के लिए उपलब्ध है।

यह नियम (मेरा पथ के साथ मतलब है) सामान्य रूप से कुकीज़ पर लागू होता है। jQuery द्वारा बनाए गए केवल नहीं।

+0

इसे स्पष्ट करने के लिए धन्यवाद होगा। –

+0

आपका स्वागत है :) –

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