2009-07-16 15 views
15

मेरे पास 9 से अधिक पंक्तियों वाला एक टेबल है।चेनिंग jQuery चयनकर्ता: लेफ्टिनेंट और: gt

यदि मैं ऐसा करता हूं: $('table tr:gt(3):lt(6)'), क्या मुझे अंत में 3 या 6 तत्व प्राप्त होंगे, और क्यों? क्या सभी चयनकर्ता एक ही प्राथमिक चयन पर लागू होते हैं, या वे विभिन्न चयनों पर लगातार लागू होते हैं?

उत्तर

28

वे अनुक्रमिक रूप से लागू होते हैं, इसलिए पहले आप पहले चार तत्वों (:gt(3)) को फ़िल्टर करेंगे, फिर आप पहले से फ़िल्टर किए गए सेट के छठे (:lt(6)) तत्व के बाद सभी तत्वों को फ़िल्टर करेंगे।

<br/><br/> 
<br/><br/> 
<br/><br/> 
<br/><br/> 
<br/><br/> 
<br/><br/> 

तो निम्नलिखित jQuery कार्य करें::

इस HTML कल्पना कीजिए

$('br:gt(3):lt(6)').addClass('sel'); 

अब आप होगा:

<br/><br/> 
<br/><br/> 
<br class="sel"/><br class="sel"/> 
<br class="sel"/><br class="sel"/> 
<br class="sel"/><br class="sel"/> 
<br/><br/> 
+5

में पंक्तियों को 5 और 6 हाइलाइट किया गया है ध्यान दें कि ': lt (n)' और ': lt (n) 'चयनकर्ता 0-अनुक्रमित और गैर-समावेशी हैं। – Blixt

+0

विधिवत ध्यान दिया, धन्यवाद। – glmxndr

+0

धन्यवाद सर बहुत उपयोगी! – GianFS

1

किसी कारण :lt(6) के लिए है कि चयन में नजरअंदाज कर दिया जाएगा , तो यह इस छेड़छाड़ में 3 से अधिक सब कुछ वापस कर देगा।

हालांकि, अगर आप इस पर स्विच, यह उम्मीद के रूप में

$('table tr:lt(6):gt(3)') 

2 पंक्तियों को वापस होगा काम करेंगे (केवल 4 पंक्ति और 5 से 6 के बीच है 3)।

** संपादित करें: ** v.1.3.2

और यह भी, lt(6) अनदेखा नहीं किया जाता, बस के रूप में मैं इसे करने की उम्मीद से काम नहीं कर इस्तेमाल करते हैं। तो :gt(3):lt(6) वास्तव में 6 तत्वों को वापस कर देगा (यदि आपके पास पर्याप्त पंक्तियां हैं, तो यह है)

+0

मैंने जिस नमूने की कोशिश की थी उस पर काम नहीं किया। आप किस jQuery का उपयोग कर रहे हैं? – tvanfosson

+1

सत्य नहीं है, ': lt (6)' लागू किया जाएगा, आपने इसे अभी नहीं देखा क्योंकि 'gt (3) '6 से अधिक तत्व लौटाए गए हैं।हालांकि, यह आपके जैसा काम करेगा यदि आप उन्हें चारों ओर स्विच करते हैं। – Blixt

+0

आह! इसलिए यह 3 से अधिक सबकुछ फ़िल्टर करता है, फिर उस पर एक नया फ़िल्टर प्राप्त होता है जो उस से प्राप्त होता है ... अच्छा। – peirix

24

मेरा सुझाव है कि आप इसके बजाय स्लाइस() विधि का उपयोग करें।

http://docs.jquery.com/Traversing/slice#startend

$('table tr').slice(2, 5).addClass("something"); 
+1

प्रश्न का उत्तर नहीं देता है, लेकिन चयन करने का एक स्पष्ट तरीका है। – tvanfosson

+0

मैं इस कारण से सीएनटी लेफ्टिनेंट और gt का कारण नहीं सोच सकता, इसलिए शायद सबटेनैंट को यह उपयोगी लगेगा। – ScottE

+0

हाँ, यह वास्तव में उपयोगी है, हालांकि यह केवल आंशिक रूप से प्रश्न का उत्तर देता है। +1 हालांकि :) – glmxndr

3

नहीं काफी क्या आप

Working Demo

असल में, दूसरा फ़िल्टर लागू करने पर क्रमिक रूप से थिंक सकता है, पहला फिल्टर का मिलान नहीं हुआ सेट करने के लिए।

उदाहरण के लिए, 10 पंक्तियों वाली 0 टेबल पर :gt(3) तत्वों को फ़िल्टर करेगा 5, 10, फिर :lt(6) 6 तत्वों पर लागू होगा, किसी को फ़िल्टर नहीं किया जाएगा।

यदि आप जोड़ते हैं/ को डेमो यूआरएल में संपादित करते हैं, तो आप चयनकर्ता के साथ खेल सकते हैं और स्वयं को देख सकते हैं। यदि आप दूसरे फ़िल्टर को :lt(2) पर बदलते हैं, तो आपको लाल

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