2013-04-29 12 views
6

मेरे पास चेकबॉक्स की श्रृंखला है, जिसके लिए मैंने क्लिक पर jquery स्क्रिप्ट लिखी है। जब उपयोगकर्ता चेकबॉक्स पर क्लिक करता है तो यह चेकबॉक्स की एक और श्रृंखला खोलता है और यह चालू होता है। अब मेरी समस्या यह है कि जब उपयोगकर्ता उन चेकबॉक्स में से कुछ को चेक करते हैं, और अगले पृष्ठ पर जाते हैं और किसी कारण से वह चेकबॉक्स पृष्ठ पर वापस आते हैं। तब मेरे पास सभी बक्से होना चाहिए जिन्हें उन्होंने खोलने के लिए चेक किया है। मैं एक चेक बॉक्स परीक्षण लिखा है जब डोम लोडचेकबॉक्स के लिए Jquery ट्रिगर ईवेंट

$(document).ready(function(){ 
    if($('.main').is(':checked')){ 
     $(this).trigger('click'); 
    }else{ 
     //do nothing 
    } 

    $('.main').click(function(){ 
     if($('.main').is(':checked')){ 
     var val = $(this).attr('alt'); 
     $('#'+val).show(); 
    }else{ 
     var val = $(this).attr('alt'); 
     $('#'+val).hide(); 
    } 
    }); 
}); 

ऊपर दिखने वाला रूप। मुख्य चेकबॉक्स वर्ग है। उस पर क्लिक करके, चेकबॉक्स की एक और श्रृंखला खोल रहा हूँ। अब मैं इसे अपने चेक किए गए बॉक्स के लिए स्वचालित रूप से करना चाहता हूं जब वे पृष्ठ पर फिर से जाते हैं

उत्तर

3

उपयोग सत्र या कुकी मुख्य वर्ग चेकबॉक्स मूल्यों को बचाने के लिए और उन लोगों के हिसाब से जाँच की जब आप वापस आते हैं और फिर निम्नलिखित कोड का उपयोग करें:

<script type="text/javascript"> 
$(document).ready(function(){ 

    $('.main').each(function(){ 
     if($(this).is(':checked')){ 
     var val = $(this).attr('alt'); 
     $('#'+val).show(); 
     }else{ 
     var val = $(this).attr('alt'); 
     $('#'+val).hide(); 
     } 
    }); 


    if($('.main').is(':checked')){ 
     $(this).trigger('click'); 
    }else{ 
     //do nothing 
    } 

    $('.main').click(function(){ 
     if($('.main').is(':checked')){ 
     var val = $(this).attr('alt'); 
     $('#'+val).show(); 
    }else{ 
     var val = $(this).attr('alt'); 
     $('#'+val).hide(); 
    } 
    }); 
}); 
</script> 
+0

मैं अभी भी मूल्यों को खींच सकता हूं। मेरी समस्या यह है कि मैं उन सबक्लास तत्वों (जो चेकबॉक्स चेक किया गया है तब खुलता है) जब उपयोगकर्ता पृष्ठ को फिर से देखता है तो स्वचालित रूप से खुलना चाहिए –

+0

क्या आपने अपना कोड आजमाया? – saifur

+0

हां! मैंने किया। डिन मदद –

0

आमतौर पर यह ब्राउज़र वह ब्राउज़र है जो "मदद करने" का निर्णय लेता है और उपयोगकर्ता पहले ही पूरा कर चुका है। आपको ब्राउज़र पर भरोसा नहीं करना चाहिए क्योंकि सेटिंग को आसानी से बदला जा सकता है और उपयोगकर्ता से उपयोगकर्ता में भिन्न हो सकता है।

इसके बजाय, आप एक कुकी/लोकलस्टोरेज में क्लिक किए गए चेकबॉक्स को संग्रहीत करने या शायद अपने सर्वर पर AJAX के माध्यम से प्रत्येक क्लिक भेजना चाहते हैं। फिर जब कोई उपयोगकर्ता पृष्ठ पर उतरता है, तो आप अपनी कुकी की सामग्री की जांच कर सकते हैं या क्लिक किए गए तत्वों को पुनर्प्राप्त कर सकते हैं जिन्हें AJAX के माध्यम से सहेजा गया था; फिर आप उचित तत्वों पर क्लिक फिर से बना सकते हैं।

Ckeck jQuery के साथ कुकी डेटा से निपटने के लिए इस संबंधित पोस्ट बाहर - How do I set/unset cookie with jQuery?

+0

मैं अभी भी मूल्यों को खींच सकता हूं। मेरी समस्या यह है कि मैं उन सबक्लास तत्वों (जो चेकबॉक्स चेक किया गया है, तब खुलता है) जब उपयोगकर्ता पृष्ठ को फिर से देखता है तो स्वचालित रूप से खुलना चाहिए –

+0

हां - आपको अनुकरण करने के लिए कुछ 'ट्रिगर (' क्लिक ') 'जादू करना होगा एक उपयोगकर्ता उन तत्वों पर क्लिक कर रहा है ... – Lix

+0

यह कैसे करें? –

1

मैं बस कुछ JSON और स्थानीय संग्रहण का उपयोग करेंगे आदि क्या इन बॉक्स को चेक किया गया था का ट्रैक रखने के

$(document).ready(function() { 
    if (localStorage.getItem('boxes')) { 
     var boxes = JSON.parse(localStorage.getItem('boxes')); 
     $.each(boxes, function (idx, val) { 
      var box = $('.main').eq(idx); 
      box.prop('checked', val); 
      $('#' + box.attr('alt')).toggle(val); 
     }); 
    } 

    $('.main').on('change', function() { 
     var val = $(this).attr('alt'), 
      boxes = {}; 

     $.each($('.main'), function (i, el) { 
      boxes[$(el).index('.main')] = el.checked; 
     }); 

     $('#' + val).toggle(this.checked); 
     localStorage.setItem('boxes', JSON.stringify(boxes)); 
    }); 
}); 

DEMONSTRATION

+0

मैं अभी भी मूल्यों को खींच सकता हूं। मेरी समस्या यह है कि मैं उन सबक्लास तत्वों (जो चेकबॉक्स चेक किया जाता है तब खुलता है) जब उपयोगकर्ता पृष्ठ को फिर से देखता है तो स्वचालित रूप से खुलना चाहिए –

+0

और इस कोड के साथ, यह अनंत काल तक भी होगा! सत्र सत्र सत्र सत्र के लिए। – adeneo

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