2013-04-05 11 views
11

मैं jQuery के साथ प्रोग्रामिक रूप से रेडियो बटन का चयन करने की कोशिश कर रहा हूं, मैंने सोचा कि चेक किए गए गुण को बदलने के समान सरल होगा।क्या jQuery 1.9.1 में रेडियो बटन के साथ कोई बग है?

हालांकि, निम्न कोड ऐसा नहीं लगता है जो क्रोम/फ़ायरफ़ॉक्स में jQuery 1.9.1 में अपेक्षित है।

अपेक्षित व्यवहार: रेडियो बटन को संलग्न करने वाले div पर क्लिक करें -> 'चेक' विशेषता सेट हो जाती है -> डीओएम में प्रस्तुत की गई रेंडर।

वास्तविक व्यवहार: div रेडियो बटन enclosing क्लिक करें -> 'जाँच' विशेषता सेट हो जाता है -> डोम में जाँच रेंडर के लिए पहली और दूसरी बटन, क्लिक किया जाँच बाद बटन प्रस्तुत करना नहीं है।

jQuery: - http://jsfiddle.net/GL9gC/

मैं jQuery के पिछले संस्करणों और यह सब काम करता है के साथ एक ही कोड अपेक्षित ढंग से कोशिश की है

$('div.form-type-radio').on('click', function() {  
    var Id = $(this).find('input[type=radio]').attr('id'); 
    $('form input[type=radio]:not(#'+Id+')').removeAttr('checked'); 
    $('#' + Id).attr('checked', 'checked');  
    console.log($('#' + Id));  
}); 

यहाँ एक jsFiddle है।

+1

यह इस से कोई लेना देना नहीं है, लेकिन क्यों हो तुम तत्व मिलेगा , फिर आईडी, और कुछ नीचे पंक्तियां तत्व प्राप्त करने के लिए आईडी का उपयोग करें, फिर से? (तत्वों के साथ भी काम नहीं करता है)। आपका पूरा कार्य केवल '$ ('इनपुट [प्रकार = रेडियो]' हो सकता है, यह) .prop ('चेक', सत्य);' – adeneo

+0

यह कुछ सिर खरोंच और डिबगिंग से अभी छोड़ा गया था, बस मुझे यकीन था कि मेरे पास था आईडी। – Simon

उत्तर

20

इस मामले में, आपको attr()/removeAttr() के बजाय prop() का उपयोग करना चाहिए।

यहां एक काम कर रहे jsFiddle है।

jQuery:

$('div.form-type-radio').on('click', function() { 
    var Id = $(this).find('input[type=radio]').prop('id'); 
    $('form input[type=radio]:not(#'+Id+')').prop('checked'); 
    $('#' + Id).prop('checked', 'checked'); 
    console.log($('#' + Id)); 
}); 
+4

धन्यवाद, मुझे लगता है कि मुझे यह पढ़ना चाहिए था (jQuery दस्तावेज़) :: "फिर भी, चेक किए गए गुण के बारे में याद रखने की सबसे महत्वपूर्ण अवधारणा यह है कि यह चेक की गई संपत्ति के अनुरूप नहीं है। विशेषता वास्तव में डिफ़ॉल्ट जांच के अनुरूप होती है संपत्ति और केवल चेकबॉक्स के प्रारंभिक मान को सेट करने के लिए उपयोग किया जाना चाहिए। चेक किए गए गुण के दौरान चेक किए गए विशेषता मान चेकबॉक्स की स्थिति में नहीं बदलते हैं। इसलिए, यह निर्धारित करने के लिए क्रॉस-ब्राउज़र-संगत तरीका है कि चेकबॉक्स है या नहीं चेक किया गया है संपत्ति का उपयोग करना " – Simon

+0

मैं पागल हो गया क्योंकि मुझे समझ में नहीं आया कि एटीआर 2.1.4 का उपयोग कर प्रोजेक्ट के लिए क्यों काम नहीं कर रहा था। जानकार अच्छा लगा। –

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