2011-02-04 16 views
6

के तत्व को जोड़ने के बाद काम नहीं कर रहा मैं एक सरल jQuery ('div # स्टार') है। क्लिक करें (समारोह।jQuery.click डोम

समारोह एक बार काम करता है जब डोम शुरू में भरी हुई है, लेकिन एक बाद में समय, मैं डीओएम को एक div # स्टार जोड़ता हूं, और उस बिंदु पर क्लिक फ़ंक्शन काम नहीं कर रहा है।

मैं jQuery 1.4.4 का उपयोग कर रहा हूं, और जहां तक ​​मुझे पता है, मुझे उपयोग करने की आवश्यकता नहीं है। लाइव या अब और देखें। किसी भी समय डोम में एक से अधिक div # star कभी नहीं है। मैंने id = "star" से class = "star" में बदलने की कोशिश की लेकिन इससे मदद नहीं मिली।

कोई भी इस काम को कैसे प्राप्त करें इस पर सुझाव आर क्यों काम नहीं कर रहा है?

मेरे पास jQuery (दस्तावेज़) .ready के अंदर क्लिक है। और बाहरी जेएस फ़ाइल में, और न ही डीओएम को div जोड़ने के बाद काम करता है।

+1

* "मैं jQuery 1.4.4 का उपयोग कर रहा हूं, और जहां तक ​​मुझे पता है, मुझे अब .live या .bind का उपयोग करने की आवश्यकता नहीं है।" * नहीं, यह सच नहीं है। जब आप 'क्लिक' या 'बाइंड' के लिए किसी अन्य शॉर्टकट का उपयोग करते हैं, तो आप जो कुछ भी मौजूद हैं * ठीक उसी समय * से निपट रहे हैं। 'लाइव' और 'प्रतिनिधि' का पूरा उद्देश्य यह है कि आप स्पष्ट रूप से कह रहे हैं "जब घटना वास्तव में होती है तो इसे बाद में समझें।" –

+0

धन्यवाद टीजे, किसी कारण से मैंने सोचा था। लाइव को – pedalpete

उत्तर

0

उपयोगकर्ता "लाइव" विधि $("div#star").live("click", function() {});

Doc

2

आप या तो live या delegate यहाँ का उपयोग करने की जरूरत है। JQuery 1.4.4 के बाद से इस विभाग में कुछ भी नहीं बदला है।

इस तरह सोचने की कोशिश करें: click और bind तत्व को स्वयं ही एक ईवेंट संलग्न करते हैं, इसलिए जब तत्व गायब हो जाता है, तो ईवेंट के बारे में सारी जानकारी भी होती है। live दस्तावेज़ स्तर पर ईवेंट को संलग्न करता है और इसमें यह जानकारी शामिल है कि किस तत्व और ईवेंट प्रकार को सुनने के लिए। delegate वही काम करता है, सिवाय इसके कि यह ईवेंट जानकारी को जो भी मूल तत्व आपको पसंद है उसे जोड़ता है।

+1

+1 से वंचित कर दिया गया था - लाइव के बारे में स्पष्टीकरण के लिए धन्यवाद - वास्तव में – adrianos

9

jQuery 1.7 के रूप में, .live() विधि को बहिष्कृत किया गया है। वर्तमान अनुशंसा .on() का उपयोग करना है जो ईवेंट हैंडलर को जोड़ने के पिछले तरीकों को कवर करने वाली सभी कार्यक्षमता प्रदान करती है। सीधे शब्दों में कहें, आपको यह तय करने की ज़रूरत नहीं है कि() यह सब कुछ करता है।

प्रलेखन handily पुराने jQuery घटना तरीकों .bind(), .delegate() से परिवर्तित करने के लिए मदद में प्रदान की जाती है, और .live()

4


.on('event', 'element', function(){ //code })

+0

यह हाल ही में jQuery संस्करणों में काम करने के लिए एकमात्र तरीका है। –

10

यह jQuery 2.0.3

$(document).on('click', '#myDiv', function() { 
    myFunc(); 
}); 
साथ काम करता है की कोशिश
+0

एक ही समस्या। यह समाधान मेरे लिए काम करता है। बहुत बहुत धन्यवाद;) –

0

आप इसके बजाय deledate का उपयोग कर सकते हैं:

$(document).delegate('click', "selector", function() { 
    //your code 
}); 

मुझे आशा है कि यह मदद मिलेगी।