2011-12-08 12 views
20
$("#dataTable tbody").on("click", "tr", function(event){ 
    alert($(this).text()); 
}); 

क्या यह वाक्यविन्यास टी के लिए है जो पहले से ही पृष्ठ पर हैं?jQuery भविष्य के तत्वों के लिए फ़ंक्शन पर?

और यदि नहीं, तो भविष्य के tr के तत्वों के लिए वाक्यविन्यास क्या है?

उत्तर

43

#dataTable tbody के अंदर भविष्य के तत्वों के लिए, आपका कोड काम करना चाहिए। को सौंपने के लिए दस्तावेज़ करने के लिए सभी तरह से क्लिक करें, भविष्य <tr> पृष्ठ पर कहीं भी के लिए एक ही हैंडलर अनुमति देता है, कोशिश:

$(document).on("click", "tr", function(event){ 
    alert($(this).text()); 
}); 
+0

तो आप क्या कह रहे हैं कि "चालू" वर्तमान और भविष्य के डोम के लिए भी है? –

+5

हां, जब तक सम्मिलित तत्व उस तत्व के अंदर होता है जो ईवेंट को बाध्य करता है। – David

+0

बिल्कुल मुझे क्या चाहिए। मैं तुमसे प्यार करता हूँ –

0

के रूप में इस jQuery 1.7 है (और मैं अपने उत्तर पोस्ट में उपवास था) आप भविष्य तत्वों

गलत के लिए jQuery के .live() उपयोग करना होगा।

.on() सभी (भविष्य) तत्वों के लिए काम करता है।

+1

???? मैं 1.7 + –

+1

गलत के बारे में बात कर रहा हूं। यह 1.7 है। – SLaks

+0

इसे 1.7 में बहिष्कृत किया गया है, इसके बजाय आपके पास ['.on()'] है (http://api.jquery.com/on/) –

1

यह सभी <tr> एस को संभालेगा, चाहे वे बनाए गए हों, लेकिन केवल वर्तमान में मौजूद #dataTable tbody के भीतर।
यह .delegate के बराबर है।

+0

पर "बहिष्कृत" देखा है तो वहां है "पहले से ही डोम" बनाम "डोम में होगा" के बीच अब कोई अंतर नहीं है? –

+0

अभी भी अंतर हैं लेकिन प्रतिनिधि(), लाइव() और चालू() दोनों को संभाल सकते हैं। – Stefan

+0

@Stefan 1.7 के बाद से मुझे अब लाइव का उपयोग नहीं करना चाहिए और प्रतिनिधि की तरह है .... तो अब कोई अंतर नहीं है ...... सही? –

0

api.jquery.com/on/

.on से() विधि को वर्तमान में चयनित ईवेंट हैंडलर्स देता jQuery वस्तु में तत्वों की निर्धारित किया है। JQuery 1.7 के रूप में, .on() विधि ईवेंट हैंडलर को जोड़ने के लिए आवश्यक सभी कार्यक्षमता प्रदान करता है। पुराने jQuery ईवेंट विधियों से कनवर्ट करने में सहायता के लिए, .bind(), .delegate(), और .live() देखें। .on() से जुड़ी घटनाओं को निकालने के लिए, .off() देखें। एक घटना है कि केवल एक बार चलाता है और उसके बाद खुद को हटा देते हैं करने के लिए, .one देख()

और api.jquery.com/live/

से jQuery 1.7 के रूप में, .live() विधि मान्य नहीं है। .on() से ईवेंट हैंडलर संलग्न करें। JQuery के पुराने संस्करणों के उपयोगकर्ताओं को .delegate() को प्राथमिकता में .live() का उपयोग करना चाहिए।

3

डेविड्स को स्वीकार कर लिया जवाब जोड़ना, आप भी करने के लिए कई घटनाओं बाध्य करने के लिए इस समाधान का उपयोग कर सकते हैं एक चयनकर्ता के साथ-साथ भविष्य के सभी मिलान तत्व भी।

उदाहरण के लिए एक इनपुट तत्व।

$(document).on({ 
    focus:function(){ 
     alert($(this).val()); 
    }, 
    blur: function(){ 
     alert($(this).val()); 
    } 
}, 'input[type=text]'); 
संबंधित मुद्दे