2013-06-24 10 views
5

मुझे वृक्षदृश्य में ऑटो चेकिंग चेकबॉक्स के साथ सहायता चाहिए।jQuery चेकबॉक्स चेक नहीं करेगा

मेरे पास एक वृक्षदृश्य है, जब मैं चेकबॉक्स पर क्लिक करता हूं, तो सूची में सभी बाल आइटमों में उनके चेकबॉक्स स्वचालित रूप से चेक किए जाएंगे। समस्या यह है कि यह काम नहीं करेगा।

treeview.find('input[type=checkbox]').each(function() { 
    $j(this).click(function() { 
     if ($j(this).is(':checked')) { 
      $j(this).siblings('ul').find('input[type=checkbox]').attr('checked', 'checked'); 
     } else { 
      $j(this).siblings('ul').find('input[type=checkbox]').removeAttr('checked'); 
     } 
    }); 
}); 

तो कोड यह सब कहता है, मुझे सभी चेकबॉक्स मिलते हैं, और प्रत्येक पर मैं ईवेंट पर क्लिक करता हूं। जब आइटम क्लिक किया जाता है, तो यह जांचता है कि यह चेक किया गया है, फिर सभी चेकबॉक्स ढूंढें और अपनी विशेषता को चेक करने के लिए सेट करें, अन्य सभी चेकबॉक्स ढूंढें और उनकी चेक की गई विशेषता को हटा दें। मेरे चयनकर्ता ठीक काम करते हैं, इसलिए यह समस्या नहीं है।

जब मैं चेकबॉक्स पर क्लिक करता हूं, तो सभी चेकबॉक्स चेक हो जाते हैं, और जब मैं अनचेक करता हूं, यह अभी भी काम कर रहा है। लेकिन एक और कोशिश पर, यह अब और काम नहीं करता है! यह बहुत अजीब है! और सबसे अजीब चीज यह है कि जब मैं कोड का निरीक्षण करता हूं, तो मैं चेकबॉक्स पर देख सकता हूं कि इसमें checked="checked" है लेकिन ब्राउज़र चेक किए गए राज्य को प्रस्तुत नहीं करेगा (वास्तव में यह मुख्य समस्या है)।

+6

'.attr()' के बजाय '.prop()' का प्रयास करें। –

उत्तर

13

उपयोग:

$el.prop('checked', true) // to check the box 
$el.prop('checked', false) // to uncheck the box 
बजाय

:

$el.attr('checked', 'checked') // to check the box 
$el.removeAttr('checked') // to uncheck the box 

इसका कारण यह है कि आप बॉक्स, नहीं जाँच की विशेषता की जाँच की राज्य को बदलने की जरूरत है। चेक की गई विशेषता केवल चेकबॉक्स की प्रारंभिक स्थिति के लिए है।

+1

सम्मान! बहुत कुछ टीएनएक्स! – Adrian

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