2011-11-19 6 views
6

मैंने ईवेंट हैंडलिंग पर jQuery दस्तावेज़ पढ़ा है, लेकिन मैं अभी भी वास्तव में समझ नहीं पा रहा हूं कि मुझे क्या करना चाहिए।jQuery में, क्या मुझे लाइव(), प्रतिनिधि() या चालू() पर चयन करना चाहिए?

मेरे पास एक मोबाइल ऐप है जहां सामग्री AJAX के साथ लोड की जाती है, इसलिए ईवेंट को उस सामग्री के लिए दस्तावेज़ पर लोड नहीं किया जा सकता है।

जैसा कि मेरा आवेदन बढ़ता है, अब मैं चिंतित होना शुरू करता हूं कि गलत ईवेंट हैंडलिंग प्रदर्शन समस्या दे सकती है।

(), live() और प्रतिनिधि() के बीच प्रदर्शन चयन पर प्रभाव क्या है?

कुछ और विचार करने के लिए?

उत्तर

6

jQuery 1.7 से, अधिकारी (और सबसे अधिक performant) जिस तरह की घटनाओं को बाध्य करने के .on और .off है ।

$('#id').on('click', myHandler); 

.on अधिरेखित .live.delegate और .bind, अधिक जानकारी के लिए यहाँ देखें:: यह सबसे तेजी से जब एक id आधारित चयनकर्ता के साथ संयुक्त है

http://blog.jquery.com/2011/11/03/jquery-1-7-released/

1

jQuery 1.7 के रूप में jQuery टीम/एपीआई की सलाह है कि:

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

संदर्भ: live() API reference, at: http://api.jquery.com/live/

तो विकल्प, पोस्ट jQuery 1.7, on() और delegate() के बीच है, और ऊपर दी गई सिफारिश, यह सुझाव देती है कि आपको .on() का उपयोग delegate() पर प्राथमिकता में करना चाहिए। हालांकि मैं के रूप में बहस नहीं कर सकता हूं कि क्यों है।

+0

तो तुम पर के बीच कोई अंतर नहीं दिख रहा है() और प्रतिनिधि, सिवाय इसके कि() की सिफारिश है? –

+1

ईमानदारी से, नहीं; सिवाय इसके कि यह * लगता है * जैसे कि वे jQuery को कुछ हद तक तैयार कर रहे हैं, और '.on()' और '.off() 'का विचार यह है कि' .delegate() 'का अर्थ है, क्योंकि ऐसा लगता है '.on()' जैसी ही चीज़ भविष्य में बहिष्कृत की जाएगी। –

1

मामले में आप खुद के लिए या अपने खुद के उत्पाद के लिए एक जावास्क्रिप्ट आवेदन बना रहे हैं, तो आप jQuery 1.7 और .on() विधि का उपयोग करना चाहिए।

मामले आप प्लगइन किसी तरह का है, जो पुराने संस्करणों पर इस्तेमाल किया जा सकता कर रहे हैं में, मैं प्रयोग करेंगे .delegate()

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