2011-05-31 8 views
5

मेरी वेबसाइट के चलते मैं कक्षा "ए" के साथ jquery का उपयोग करके नए divs बनाते हैं।क्लिक करें() jquery फ़ंक्शन नए divs पर उपलब्ध नहीं है

$(document).ready(function() { 
    $(".a").click(function(){ 
     $(".a").hide(); 
    }); 
}); 

समस्या यह है कि एक ही वर्ग के साथ बनाए गए नए divs इस समारोह जब क्लिक फोन नहीं है: इस प्रकार मैं के लिए "एक" वर्ग एक क्लिक() फंक्शन को परिभाषित किया है। "ए" वर्ग के साथ अन्य divs जो शुरुआत में हैं। मैं क्या गलत कर रहा हूं?

उत्तर

4
$(document).delegate('.a', 'click', function() { 
    $(this).hide(); 
}); 
+0

उत्कृष्ट, thanx! – Nayish

+1

+1 'लाइव()' के बजाय 'प्रतिनिधि()' का उपयोग करने के लिए +1, भले ही इस उदाहरण में वे शायद ही भिन्न हों। –

+1

यह ध्यान रखना महत्वपूर्ण है कि जिस चयनकर्ता को आप 'डिलीगेट' कहते हैं, उतना ही निकट होना चाहिए जितना आप संभवतः प्रतिनिधि करना चाहते हैं। –

3

.live() समारोह जो भी नव डाला डोम तत्वों है कि आपके चयनकर्ता से मेल के लिए आवेदन करना चाहिए उपयोग करके देखें: "लाइव" विधि

$(document).ready(function() { 
    $(".a").live('click', function(){ 
     $(".a").hide(); 
    }); 
}); 
+2

कृपया 'live()' के उपयोग का समर्थन न करें। यह एक दुर्भाग्यपूर्ण गलती थी। कृपया इसके बजाय 'प्रतिनिधि() 'का उपयोग करें; -1 –

+0

इसने मुझे एक-गूगलिंग भेजा, जिसने इस प्रश्न को उत्तर दिया और जवाब दिया कि क्यों 'प्रतिनिधि() 'लाइव()' से बेहतर हो सकता है: http://stackoverflow.com/questions/4204316/jquery-live- बनाम प्रतिनिधि – marramgrass

-1

का प्रयोग करें।

http://api.jquery.com/live/

+1

कृपया 'लाइव()' के उपयोग का समर्थन न करें। यह एक दुर्भाग्यपूर्ण गलती थी। कृपया इसके बजाय 'प्रतिनिधि() 'का उपयोग करें; -1 –

2

यह भी काम कर सकते हैं।

(function($) { 
    $(document).ready(function() { 
    $('body').on('click', '.a', function() { 
     $(this).hide(); 
    }); 
    }); 
}(jQuery)); 

.on() उन घटनाओं को नियंत्रित करता है जो वर्तमान में मौजूद नहीं हैं और अभी तक मौजूद नहीं हैं।

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

  • कोई संबंधित समस्या नहीं^_^