2009-02-19 14 views
15

यहां कुछ कोड मिला है जो काम नहीं कर रहा है:JQuery - प्रत्येक अंतिम सूची आइटम में कक्षा कैसे जोड़ें?

$("#sidebar ul li:last").each(function(){ 
     $(this).addClass("last"); 
}); 

असल में मेरे पास 3 सूचियां हैं और प्रत्येक अनॉर्डर्ड सूची में अंतिम रूप से दिखाई देने वाली प्रत्येक आइटम में एक कक्षा (अंतिम) जोड़ना चाहती है।

<ul> 
     <li>Item 1</li> 
     <li>Item 2</li> 
     <li class="last">Item 3</li> 
</ul> 

आशा है कि समझ में आता है, चीयर्स!

+0

क्या यह अतिरिक्त श्रेणी सूची के नीचे मार्जिन जोड़ने के लिए उपयोग की जाती है? यदि ऐसा है, तो आप इसके बजाय उल की मार्जिन-डाउन प्रॉपर्टी का उपयोग कर सकते हैं। यदि नहीं, तो आगे बढ़ो। = पी – EndangeredMassa

+0

इसके अलावा, आपको इस मामले में '.each' करने की आवश्यकता नहीं है, आप सीधे '.addClass' कर सकते हैं। jQuery सभी आदेशों को मिलान किए गए तत्वों के पूरे सेट पर लागू करेगा। – cdmckay

+0

इसके अलावा, विभिन्न चयनकर्ताओं का परीक्षण करने के लिए एक अच्छी साइट और देखें कि वे कैसे काम करते हैं: http://www.woods.iki.fi/interactive-jquery-tester.html – cdmckay

उत्तर

36

आसान गलती की कोशिश कर सकते हैं। इसे आज़माएं:

$("#sidebar ul li:last-child").addClass("last"); 

मूल रूप से: आखिरकार ऐसा नहीं करता जो आपको लगता है कि ऐसा करता है। यह केवल दस्तावेज़ में बहुत ही अंतिम से मेल खाता है, प्रत्येक सूची में अंतिम नहीं। यही है: आखिरी बच्चा है।

+0

टिप के लिए धन्यवाद, उस पर कभी नहीं चले गए अब – smoothdeveloper

+0

बिल्कुल सही! - साथी को मेरी मदद करने के लिए समय निकालने के लिए धन्यवाद, इसकी सराहना करें –

+0

बहुत जानकारीपूर्ण, धन्यवाद! – Heihachi

3

कारण जो काम नहीं करेगा इस तथ्य के कारण :last केवल एक तत्व से मेल खाता है। JQuery दस्तावेज़ से:

अंतिम चयनित तत्व से मेल खाता है।

तो क्या अपने कोड क्या कर रहा है अंतिम मान लेने कि सेट से सभी <li> एक <ul> में तत्वों का एक सेट हो रही है और फिर रहा है। उदाहरण:

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

आपका कोड तत्व <li>6</li> वापस करेगा। (आंतरिक रूप से, यह <li>1</li> से <li>6</li> एकत्र करेगा और फिर अंतिम को बंद कर देगा और इसे वापस कर देगा)।

जो आप खोज रहे हैं वह यह है कि अन्य उत्तरों ने क्या कहा है: :last-child

0

या आप अपनी सूची एक आईडी दे सकते हैं और jquery-call के संदर्भ के रूप में इसका उपयोग कर सकते हैं।

<ul id="myList"> 
    <li>Item</li> 
    <li>Item</li> 
    <li>Item</li> 
    <li>Item</li> 
</ul> 

<ul id="anotherList"> 
    <li>Item</li> 
    <li>Item</li> 
    <li>Item</li> 
    <li>Item</li> 
</ul> 

और फिर आप कर सकते हैं:

jQuery("li:last", "ul#myList").addClass("lastItem"); 

अब पहली सूची में अंतिम ली वर्ग "lastItem" होगा।

संपादित करें: क्षमा करें, प्रश्न को गलत तरीके से पढ़ें। कृपया इसे अनदेखा करें।

4

jQuery के साथ इस

$("ul li").last().addClass('last'); 
0

जोड़ने आप आप प्रत्येक 'उनके लिए एक वर्ग निर्दिष्ट करेंगे और उपयोग कर सकते हैं 3 अलग-अलग सूचियों के लिए वर्ग को जोड़ने के लिए की जरूरत है:

$('#sidebar ul.class li:last-child').each(function(e){ 
    $(this).addClass("last"); 
}); 

इस के रूप में वास्तव में काम करना चाहिए आप की उम्मीद है

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