अद्यतन 2:
यहाँ कुछ अन्य टिप्पणी सारांश में। जवाब है यह पर निर्भर करता है।
jQuery का चयनकर्ता इंजन सिज़ल चयनकर्ता का मूल्यांकन करता है उसी तरह सीएसएस करता है: from right to left। तो आम तौर पर दाएं तरफ बहुत विशिष्ट और बाईं तरफ कम विशिष्ट होना बेहतर होता है।
लेकिन यह एचटीएमएल की संरचना पर निर्भर करता है और तत्वों को बिखरे हुए कैसे आप चाहते हैं।
तो अगर आप
a
|
...
|
b
-----------------
| |
d d d c c c c c c c c c c c c c c c c c c c
तो किया जा रहा है और अधिक विशिष्ट, तेजी से $('a b > c')
है, क्योंकि आप तत्व b > c
साथ जल्दी सेट कम कर रहे हैं और हर c
के लिए a
विरासत की जाँच करने की जरूरत नहीं है की है।
जबकि यदि आप,
a
|
...
|
b
-----------------
| |
e e e e e e e e d d c c c c c c e e e e e e
तो $('a c')
तेजी से हो जाएगा के बाद से चयनकर्ता सरल है और b
का एक बच्चा होने के लिए परीक्षण c
इस मामले में अनावश्यक है (बेशक आप भी $('c')
कर सकता है)।
मूल जवाब:
बावजूद जो उन में से एक, तेजी से होता है आप बार बार एक तत्व का उपयोग करने की है, दुकान इसे करने के लिए एक संदर्भ:
var $element = $('#myId .someElement');
$('some other selector').each(function() {
// access $element here
});
The first selector seems to be a bit faster (क्रोम 8 में)।
नए ब्राउज़रों में (जो querySelectorAll
का समर्थन करता है), अंतर शायद उन ब्राउज़र में जितना बड़ा नहीं है जो इसका समर्थन नहीं करते हैं।
अद्यतन:
मुझे लगता है कि यह ज्यादातर कितने निर्मित तरीकों jQuery का उपयोग कर सकते पर निर्भर करता है।तो यह सोचते हैं querySelector*
उपलब्ध नहीं है, पहले चयनकर्ता दूसरे चयनकर्ता के लिए
document.getElementById('myId')[0].getElementsByClassName('someElement')
में अनुवाद किया जा सकता है, jQuery अतिरिक्त जांच करने के लिए एक तत्व वास्तव में एक बच्चा है या नहीं होगा। अर्थात। कुछ और प्रसंस्करण शामिल है।
इस परिणाम की उम्मीद नहीं थी, यह निश्चित रूप से सही जवाब है! धन्यवाद – Michael
@ माइकल: आपका स्वागत है, और कृपया आपका प्रश्न सक्रिय होने पर उत्तर बटन को सीधे * टिक * न करें, खासकर जब @ फ़ेलिक्स भाग लेने वाले लोगों को ;-) – ifaour
: डी मैं इसे तारीफ के रूप में लेता हूं :) बीटीडब्ल्यू। दिलचस्प परिणाम। मैंने सोचा कि '$ ('# myId .someElement') किसी भी मामले में तेज़ होगा, क्योंकि इसे सीधे 'querySelectorAll (' $ myId .someElement ')' में अनुवाद किया जा सकता है, लेकिन ऐसा लगता है कि' $ ('# myId')। ढूँढें ('कुछ एलीमेंट') 'बहुत तेज़ है। वाह। –