2012-05-14 15 views
18

मेरे पास एक अनियमित सूची है।jQuery में, मैं कुछ वर्गों वाले तत्वों के बीच तत्वों का चयन कैसे करूं?

<ul> 
    <li class="foo">Baz</li> 
    <li>Select Me!</li> 
    <li>Select Me!</li> 
    <li>Select Me!</li> 
    <li class="bar">Baz</li> 
    <li>Don't Select Me</li> 
    <li>Red Herring List Item</li> 
</ul> 

मैं jQuery का उपयोग कर कक्षाओं और बार के साथ सूची आइटमों के बीच सूची आइटमों का चयन कैसे करूं? मैं किसी भी सूची आइटम की सामग्री नहीं जानता। मुझे यह भी नहीं पता कि कितने सूची आइटम चुने जाने हैं ताकि मैं गिनती पर निर्भर न हो।

+1

[ '$ ('li.bar') prevUntil (। 'li.foo') ' ] (http://api.jquery.com/prevUntil/) – Orbling

+1

यदि यह दिलचस्प है तो मेरे उत्तर में स्रोत कोड चेकआउट करें ... – gdoron

उत्तर

28
$('li.foo').nextUntil('li.bar') 

http://jsfiddle.net/zZRDB/1/

+4

मुझे बिल्कुल पता नहीं था कि यह – kritzikratzi

+2

मौजूद है! fyi, आप '$ ('li.foo') का उपयोग कर सकते हैं। अगला ('li.bar')। css ('background', '# f00');" attr "विधि का उपयोग करने के बजाय। : डी – dangerChihuahua007

+0

बहुत बहुत अच्छा !!! – mcgrailm

12
var $elements = $('.bar').prevUntil('.foo'); 

या अन्य तरीके से:

var $elements = $('.foo').nextUntil('.bar'); 

Demo


आप को पता है कि यह कैसे लागू हो जाता है intersted रहे हैं, 012,382,:

nextUntil: function(elem, i, until) { 
    return jQuery.dir(elem, "nextSibling", until); 
}, 
prevUntil: function(elem, i, until) { 
    return jQuery.dir(elem, "previousSibling", until); 
},​ 

dir: function(elem, dir, until) { 
    var matched = [], 
     cur = elem[dir]; 

    while (cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery(cur).is(until))) { 
     if (cur.nodeType === 1) { 
      matched.push(cur); 
     } 
     cur = cur[dir]; 
    } 
    return matched; 
},​ 
+0

+1। – VisioN

+1

@VisioN। मैंने डेमो के लिए सोचा, यह अच्छा है, रंग बदल रहा है ... ** 2012 ** – gdoron

+0

रंग एनीमेशन कहां है? मैंने बेहतर देखा है: पी – VisioN

2

प्रयास करें,

$('li.bar').prevUntil('.foo') 

DEMO

2
var index1 = $('li.foo').index(), 
    index2 = $('li.bar').index()-1; 

    $('li:gt('+ index1+'):lt('+ index2+')', 'ul'); 

या $('li.foo').nextUntil('li.bar');

या $('li.bar').prevUntil('li.foo');

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

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