2011-12-12 18 views
23

मुझे पता है कि .live() अब को हटा दिया गया है, लेकिन मैं इसे बदलने और कार्यक्षमता को रखने के लिए प्रतीत नहीं कर सकता।Jquery। बनाम .live

मेरे पास jQuery में .on() फ़ंक्शन के बारे में एक त्वरित प्रश्न है। मैं वर्तमान में .live()here

उपयोग कर रहा हूँ तो जैसा:

$('table tr th').live("click", function() { 
}); 

लेकिन, जब मैं कोशिश करते हैं और की जगह .live().on() साथ यह अब काम करता है के रूप में यह चाहिए था।

मैं

$('table tr').live("click", "th", function() { 
}); 

और

$('table tr').delegate("th", "click", function() { 
}); 

रूप में, लेकिन कोई लाभ नहीं हुआ और साथ ही

$('table tr th').on("click", function() { 
}); 

में डालने की कोशिश की है।

यह क्यों है और इसे ठीक से काम करने के लिए मैं क्या कदम उठा सकता हूं?

+1

संभव डुप्लिकेट [jQuery 1.7 (-) लाइव() में चालू किया जा रहा] (http://stackoverflow.com/questions/8021436/jquery-1-7-turning-live- इन-ऑन) –

+0

@ फ़ेलिक्सक्लिंग मैं कॉल की नकल करने के लिए '$ (दस्तावेज़)' का उपयोग करने से बचने की कोशिश कर रहा हूं।मैं सोच रहा था कि ऐसा करने का कोई और तरीका है जो jQuery API साइट पर उदाहरणों के अनुरूप है। –

+0

बस निकटतम मौजूदा तत्व (पूर्वज) लें (जो तब 'डिलीगेट' के अनुरूप होगा)। –

उत्तर

31

on() समारोह, आप करने के लिए अपने कोड में कोई बदलाव करना चाहिए एक वाक्य अद्यतन की आवश्यकता है http://www.andismith.com/blog/2011/11/on-and-off/

+0

बहुत सच है, मैं संदर्भ अद्यतन कर दूंगा। –

0

मुझे लगता है कि आप tr तत्वों को अपनी तालिका में जोड़ रहे हैं, th नहीं।

$('table').on("click", "tr th", function(){}); 
+0

' एक सरणी से उत्पन्न होते हैं और तालिका के पहले' 'में लिखे गए हैं। आपका समाधान हालांकि काम नहीं करता है ... –

+0

यह काम नहीं करेगा, उसकी तालिका '.replaceWith() ' –

9

इस प्रयास करें:

$('table tr th').live("click", function() { 

$(document).on("click", "table tr th", function() { 

होना चाहिए कि कैसे आप .live कॉल बिल्कुल नकल होगा। आप अपने चयनकर्ता को दस्तावेज़ से अपने डीओएम संरचना के आधार पर कुछ और सार्थक रूप से सीमित कर सकते हैं।

संपादित करें:

बस स्पष्ट करने के लिए, अपने उदाहरण में, आप $(document).on(... उपयोग करने के लिए है क्योंकि तालिका किसी भी माता-पिता नहीं है और अपने पृष्ठ के जीवन के दौरान बदल दिया जाता है की आवश्यकता है।

$('body').on("click", "table tr th", function()... 

अधिक जानकारी के लिए इस लेख चेक आउट::

+0

का उपयोग करके प्रतिस्थापित हो जाती है, इसलिए क्योंकि मैं कोड में तालिका को प्रतिस्थापित कर रहा हूं, मुझे' $ (दस्तावेज़)' का उपयोग करने की आवश्यकता है कि कॉल पूरे काम पर जारी है? –

+0

@Andrew: नहीं, पदानुक्रम में कोई मौजूदा तत्व करेगा। –

+0

@ फ़ेलिक्सक्लिंग आह ठीक है, धन्यवाद! –

2

सुनिश्चित करें कि चयनित तत्व (वें/tr) जब पृष्ठ प्रारंभ में लोड होता है तब मौजूद होता है। नया चयनकर्ता काम नहीं करेगा अगर यह चयनकर्ता बाद में डोम में जोड़ा जाता है।

प्रयास करें की

$('body').on('click', 'thesSelectorForYourTriggerElement', function(){ 
    //callback 
}); 
संबंधित मुद्दे