2011-08-16 15 views
9

अगर मैं कुछ इस तरह है:jQuery में उल सूची से अंतिम (अंतिम लेकिन एक) li तत्व का चयन कैसे करें?

<ul> 
<li>1</li> 
<li>2</li> 
<li>3</li> 
<li>4</li> 
<li>5</li> 
</ul> 

और मैं अंत से पहले करने के लिए addClass को "अतिरिक्त" की जरूरत है (उदाहरण के लिए अगर मैं 5 ली तत्वों अतिरिक्त वर्ग 4 li तत्व में जोड़ दिया जाएगा है) उल से सूची।

इसलिए इस मामले में परिणाम होगा:

<ul> 
<li>1</li> 
<li>2</li> 
<li>3</li> 
<li class="extra">4</li> 
<li>5</li> 
</ul> 

अग्रिम धन्यवाद

+6

आज मुझे एक नया शब्द सिखाए जाने के लिए धन्यवाद, 'अंतिम'। –

+1

मैं सिर्फ अंतिम के लिए +1 करने जा रहा हूँ। –

उत्तर

10
$("li:last").prev("li").addClass("class-to-add") 

http://api.jquery.com/prev/

http://api.jquery.com/last-selector/

+1

धन्यवाद, ऐसा लगता है कि केवल आपका संस्करण ड्रूपल में jQuery के मेरे संस्करण के साथ काम करता प्रतीत होता है। – killingon

+2

@ किलिंगन: वह संस्करण क्या है? यदि आप सुनिश्चित नहीं हैं तो 'अलर्ट ($। Fn.jquery)' करें। – user113716

+0

@ किलिंगन: मैं भी उत्सुक हूं कि jQuery संस्करण को जानना –

3
$("ul li").last().prev().addClass("foo"); 
0
var items = $("ul").children(); 
var penultimate = items.eq(items.length - 2); 
penultimate.addClass("extra"); 
1

के बाद से अपने सभी <li> तत्वों भाई बहन हैं, और उनके बीच कोई अन्य तत्व है, तो आप last() का उपयोग कर prev():

$("li").last().prev().addClass("extra"); 

वहाँ थे अन्य तत्वों के बीच, आप के बजाय prevAll() उपयोग करने के लिए होगा:

$("li").last().prevAll("li").first().addClass("extra"); 
0

आप निम्न का उपयोग कर सकते:

$('li').eq($('ul li').length - 2); 

JS Fiddle demo

संदर्भ:

1
$('li').eq($('li').length-2).addClass("extra") 
5

अगर वहाँ केवल एक सूची है, बस eq()[docs] विधि के लिए एक नकारात्मक सूचकांक गुजरती हैं।

$("ul li").eq(-2).addClass("extra"); 

लगता है जैसे आप jQuery के पुराने संस्करण का उपयोग कर रहे हैं।

Here's an example जो इसे jQuery 1.3.2 में काम करता है।

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