2011-07-18 12 views
6

यदि मेरे पास एक ही नाम के कई रेडियो बटन हैं, तो किसी एक समय में केवल एक ही चुना जा सकता है। जब कोई चुना जाता है, तो कोई भी नाम उनके चयन को खो देता है। मैं इस बात से चिंतित हूं कि यह jQuery के लिए .change() ईवेंट क्यों नहीं बना रहा है।क्यों नामांकन के परिणामस्वरूप jQuery बटन .change() रेडियो बटन पर आग नहीं डाली गई है?

$.change() फ़ंक्शन हैकिंग बहुत कठोर होगा, लेकिन ऐसा लगता है कि यह एक बग के रूप में रिपोर्ट नहीं किया जाता है - इसलिए मुझे यह जानने में दिलचस्पी है कि ऐसा क्यों नहीं है।

नीचे परीक्षण: मैं उम्मीद करता हूं कि जब भी रेडियो चुना जाता है तो दो बदलाव घटनाएं आग लगती हैं, लेकिन ऐसा नहीं है। http://jsfiddle.net/XzmmW/

उत्तर

11

चयनित नहीं हैं आप एक select तत्व की तरह रेडियो बटन का एक सेट के बारे में सोच रहे हैं, तो यह स्पष्ट हो जाता है कि अचयनित रेडियो बटन के लिए एक परिवर्तन घटना को आग लगाना क्यों अनावश्यक है।

जब आप select तत्व में चयनित विकल्प बदलते हैं, तो आपको पहले से चुने गए विकल्प के लिए एक और एक नए चुने गए विकल्प के लिए एक बदलाव ईवेंट (आप किसी और चीज की अपेक्षा नहीं करेंगे) प्राप्त करेंगे।

जैसा कि पहले से ही उल्लेख किया गया है, जब एक रेडियो बटन चुना जाता है, तो एक ही सेट में कोई अन्य नहीं हो सकता है, इसलिए यह दूसरी परिवर्तन घटना को आग लगाना अनावश्यक होगा।

यह भी ध्यान दें कि यह jQuery के लिए विशिष्ट नहीं है - मानक जावास्क्रिप्ट परिवर्तन घटना बिल्कुल उसी तरह काम करती है।

2

केवल 1 परिवर्तन घटना नहीं है आप "पुराने चयन" के लिए "नया चयन" में बदल गया ...:

यहाँ उदाहरण है।

ध्यान रखें कि यद्यपि आपके पास कई "तत्व" हैं, वे के समान फॉर्म तत्व (जैसा कि name विशेषता द्वारा परिभाषित किया गया है) का हिस्सा हैं।

1

एक नामित समूह में प्रत्येक रेडियो बटन के लिए कोई ईवेंट सक्रिय करने की जरूरत नहीं है, जब एक चयन किया जाता है आप जानते हैं कि दूसरों

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