यहां समस्या यह है कि "ऑन" उन सभी तत्वों पर लागू होता है जो समय पर मौजूद हैं। जब आप एक तत्व गतिशील रूप से बनाते हैं, तो आपको फिर से चलाने की आवश्यकता होती है:
$('form').on('submit',doFormStuff);
createNewForm();
// re-attach to all forms
$('form').off('submit').on('submit',doFormStuff);
चूंकि रूपों में आमतौर पर नाम या आईडी होते हैं, इसलिए आप नए रूप में भी संलग्न कर सकते हैं। यदि मैं बहुत अधिक गतिशील सामान बना रहा हूं, तो मैं एक सेटअप या बाइंड फ़ंक्शन शामिल करूंगा:
function bindItems(){
$('form').off('submit').on('submit',doFormStuff);
$('button').off('click').on('click',doButtonStuff);
}
तो फिर जब भी आप कुछ बनाते हैं (आमतौर पर मेरे मामले में बटन), मैं सिर्फ पेज पर सब कुछ अपडेट करने के लिए बाइंडिम्स कहता हूं।
createNewButton();
bindItems();
मुझे 'बॉडी' या डॉक्यूमेंट एलिमेंट्स का उपयोग करना पसंद नहीं है क्योंकि टैब और मॉडल्स के साथ वे घूमने लगते हैं और वे काम करते हैं जिनकी आपको उम्मीद नहीं है। मैं हमेशा यथासंभव विशिष्ट होने की कोशिश करता हूं जब तक कि यह एक साधारण 1 पृष्ठ परियोजना नहीं है।
$(document).on('submit','form.remember',function(){...})