ईवेंट प्रतिनिधिमंडल को लंबे समय से jQuery द्वारा समर्थित किया गया है। उचित चयनकर्ता बनाने में कठिनाई है। मूल रूप से, delegate
का उपयोग किया गया था, लेकिन हाल ही में on
के प्रतिनिधि फॉर्म का उपयोग किया जाना चाहिए।
घटना प्रतिनिधिमंडल का उद्देश्य बाल तत्वों पर घटनाओं को सुनना और उन तत्वों पर बाध्य घटना हैंडलरों को आमंत्रित करना है जैसे कि वे माता-पिता की बजाय बाल तत्व से बंधे थे। इसका मतलब यह है कि डीओएम में प्रत्येक तत्व को हैंडलर बाध्य करने के बजाय, आप प्रारंभिक चयन में प्रत्येक तत्व को एक हैंडलर बाध्य कर रहे हैं (document
एक एकल तत्व है)।यह भी, तत्वों की एक कभी बदलते सेट करने के लिए बाध्य करने के लिए एक भी चयनकर्ता का उपयोग करने के लिए के रूप में नए तत्व document
करने के लिए अपने घटनाओं का प्रचार करेंगे या नहीं, वे अस्तित्व में जब प्रारंभिक ईवेंट हैंडलर ही था एक आसान तरीका के लिए बनाता है:
$(document).on('click', '*:not(#master, #master *, #slave, #slave *)', function (e) {
//this will reference the clicked element
});
साथ ही, ध्यान दें मैं सिर्फ ने कहा कि ऐसा नहीं है कि तत्वों #master
या #slave
नहीं होना चाहिए, वे #master
या #slave
के बच्चों या तो नहीं होना चाहिए।
प्रत्येक क्लिक तत्व (दो को छोड़कर) पर आपके क्लिक हैंडलर का एक उदाहरण बाध्यकारी प्रदर्शन पर भयानक होने जा रहा है। – jbabey
आपका संस्करण काम क्यों नहीं करता है क्योंकि आप परीक्षण कर रहे हैं कि 'दस्तावेज़' तत्व में 'मास्टर' या 'गुलाम' नहीं है, इसकी आईडी के रूप में। यह हमेशा सत्य होता है (आईआईआरसी 'दस्तावेज़' में आईडी नहीं हो सकती है), इसलिए हैंडलर 'दस्तावेज़' से जुड़ा हुआ है और प्रत्येक क्लिक से 'गुलाम' छुपाया जाएगा। फिर, घटना प्रसार के कारण, '# मास्टर' से 'क्लिक' ईवेंट 'दस्तावेज़' पर बुलबुला होगा जहां यह '# गुलाम' छुपाएगा, भले ही' # मास्टर' ने इसे टॉगल किया हो। इस काम को करने के लिए आपको 'event.target' का परीक्षण करना होगा। –