2012-11-03 19 views
54

Olası Çoğalt: .class söylemek nasıl
How do I select the “last child” with a specific class name in CSS?CSS: Geçen-of-type [sınıfları değil, elementler!]

başlık diyor, ben adres için istediğiniz css, belli bir sınıfa sahip olan belirli bir türün son elemanına geçer.

div:last-of-type { margin-right:0; } 

ama

div.class:last-of-type { margin-right:0; } 

gibi bir şey nasıl bunu yapmak istiyor: Aşağıdaki kod mükemmel çalışıyor?

+2

: [ class = 'class']: son kullanma tarihi {margin-right: 0;} Burada çalışma örneğine bakın http://codepen.io/chasebank/pen/ZYyeab http://codepen.io/chasebank/pen/ZYyeab öznitelik seçicileri hakkında daha fazla bilgi için http: // css- tricks.com/attribute-selectors/ – Chase

+2

Hayır, seçiciler burada çalışmaz: [class = 'class']: sonuncusu "sonuncusu" olarak anlaşılır. Bu sınıfa sahip olması koşuluyla, "bu sınıfa sahip olanların sonuncusu" değil. –

cevap

55

Son .class'u bulamadıkça last-of-type ile mümkün değildir.

Düzenleme: aslında bu cevaba yapıcı bir şeyler eklemek için, bu seçici bulmak için JavaScript çare veya biçimlendirme/CSS gözden geçirebilir. Kendimi, bir sınıf seçicisi için last-of-type'un yararlı olacağı bir durumda bulduğum halde, biraz daha düşünülmüşken etrafta işlenemeyecek bir şey değil.

+0

Evet, ': sonuncusu' tek başına bir sınıf seçicisiyle kullanmak çok kasıtsızdır; En iyisi, herhangi bir türden sonuncusu bu sınıfı kullanmak istemediğiniz sürece, bir tip seçici ile kullanılır. – BoltClock

+3

El ile ekstra dersler eklemek istemiyorsanız, olası bir jQuery yedeği: '$ ('. Class'). Last(). AddClass ('son'); – fncombo

+3

@amustill Tamamen katılıyorum, ancak bazı durumlarda İstemciyi değiştirmek için bir olasılık yok (bir sınıf ekle, bir şey etrafında bir div koymak) çünkü istemciniz DOM şeyler oluşturmak veya değiştirmek için hiçbir olanağı olmayan boktan bir CMS ile çalışır. Bu zalim gerçek. – Sliq

1

nomargin bir css sınıfı olun ve onu kolayca değiştirebilirsiniz:

var items = document.getElementsByClassName('nomargin'); 
items[items.length-1].style.color = 'black'; 
items[items.length-1].style.background = 'white'; 

veya doesn't have enough jQuery varsa, kullanabilirsiniz: Bu özellik seçici kullanılarak yapılabilir

jQuery('div.nomargin:last').css({ 
    color:'black', 
    background:'white'}) 
+33

jQuery CSS değildir. –

+1

@ JukkaK.Korpela Peki, ama gerçek hayatta, müşterinizin ihtiyacına uyacak olası bir çözümdür. Çözümü beğendim. – Sliq

+0

@Panique Eğer jQuery çözümleri arıyorsanız, ** bir ** tamamen * farklı teknoloji (bu durumda CSS) hakkında bir soru sormalısınız. –