यदि आप कभी भी AJAX के माध्यम से पृष्ठ सामग्री या लोडिंग सामग्री को गतिशील रूप से उत्पन्न कर रहे हैं, तो निम्न उदाहरण वास्तव में आपके जाने का तरीका है:
- यह उस मामले में दोहरे बंधन को रोकता है जहां स्क्रिप्ट एक से अधिक बार लोड की जाती है, जैसे कि AJAX अनुरोध में।
- यह
bodyदस्तावेज़ दस्तावेज़ पर रहता है , इसलिए इस बात की परवाह किए बिना कि क्या तत्व जोड़े, स्थानांतरित किए गए, निकाले गए और फिर से जोड़े गए हैं, bodyचयनकर्ता के मिलान के सभी वंशज उचित बंधन बनाए रखेंगे।
कोड:
var bind_to = ':input';
$(document.body).off('change', bind_to);
$(document.body).on('change keyup', bind_to, function(event) {
alert('something happened!');
});
कृपया ध्यान दें! मैं का इस्तेमाल कर रही हूँ $.on()और $.off()नहीं बल्कि कई कारणों से अन्य तरीकों की तुलना:
$.live()और $.die()हटाए गए हैं और jQuery के अधिक हाल के संस्करणों से हटा दिए गए हैं।
- मुझे या तो एक अलग फ़ंक्शन को परिभाषित करने की आवश्यकता है (इसलिए वैश्विक गुंजाइश को कम करना), और फ़ंक्शन को दोनों पास करना होगा
$.change() और $.keyup()अलग से पास करें, या प्रत्येक फ़ंक्शन को समान फ़ंक्शन घोषणा पास करें; डुप्लिकेट तर्क ... जो बिल्कुल अस्वीकार्य है।
- यदि तत्वों को कभी भी DOM में जोड़ा जाता है,
$.bind()तो वे तत्वों को गतिशील रूप से बांधते नहीं हैं क्योंकि वे बनाए जाते हैं। इसलिए यदि आप बाइंड करते हैं :inputऔर फिर DOM में एक इनपुट जोड़ते हैं, तो वह बाइंड विधि नए इनपुट से जुड़ी नहीं होती है। फिर आपको DOM में सभी तत्वों को स्पष्ट रूप से un-bind और फिर re-bind करना होगा (अन्यथा आप बाइंड डुप्लिकेट होने के साथ समाप्त हो जाएंगे)। प्रत्येक बार DOM पर एक इनपुट जोड़े जाने पर इस प्रक्रिया को दोहराना होगा।