2011-04-19 21 views
11

İşte benim problemim.jQuery/CSS - Bir elemanın ilk oluşumunu başka bir elemanın içinde nasıl şekillendirirsiniz?

HTML

<div id="content"> 
    <h1>Headline</h1> 
    <p>First paragraph that needs to be yellow.</p> 
    <p>Second paragraph that need not change. :) </p> 
    <p>Third paragraph that need not change. :) </p> 
</div> 

Ben pcontent birinci çocuk olmadığı için çalışmıyor #content p:first-child {color:yellow; } kullanıyorsanız ... h1 ilk doğan olduğunu.

HTML koduna dokunmadan bunu nasıl yapabilirim?

Teşekkür ederiz!

Tüm iyi, Cris yerine

+0

jQuery (Javascript) veya CSS ister misiniz? – ThiefMaster

+0

herhangi bir yapardı. Cevabı jQuery ile aldım ve harika çalışıyor. – Cris

cevap

14

Bu en iyi yoludur: sadece CSS ile

$('#content p:first').css('color', 'yellow'); 
+0

Çalışmaları güzelce. Hepinize teşekkür ederim. – Cris

3

Kullanım .first() fonksiyonu (veya :first seçici):

jQuery kullanarak etiketledi yana
$('#content > p').first().css('color', 'yellow'); 
+0

bkz. Naveed'in daha kısa bir cevabı - her ikisinin de çalışmasına rağmen daha hızlıdır. – Milimetric

+1

gerçekten? ISTR, işlev tabanlı filtrelerin, daha az ayrıştırma gerektirdiğinden, sizzle tabanlı seçiciler kullanmaktan daha hızlı olduğunu okur. – Alnitak

+0

Ben jQuery resmi tavsiyesi olduğunu düşünüyorum, çünkü Sizzle sağdan sola ayrıştırır, jQuery soldan sağa ayrıştırır. Bundan dolayı, Sizzle her p: ilkini seçecek ve daha sonra '' content' bir ebeveyni ile 'p: ilk 'olarak daraltacak, jQuery ise önce' # content' seçecek ve 'p's' i seçecektir. ilkini seç. Ancak, normal HTML sayfalarında performans göz ardı edilebilir. –

2

, jQuery tabanlı çözüm:

$ ("# content p: first-child"). css ({color: "sarı;"});

DÜZENLEME:

$("#content p:nth-child(2)").css({color:"yellow" }); 
+0

@Milimetric: Bu bağlantıyı kontrol edin: http://api.jquery.com/first-child-selector/ – Chandu

+0

garip, ama bir kemanda benim için işe yaramıyor. – Milimetric

+0

@Milimetric: Düzenleme – Chandu

0

, bunu böyle kardeş seçicisi + kullanabilirsiniz:

#content h1 + p { color: yellow; } 

Bu olur Sadece H1’leri takip eden paragrafları değiştirin.

+2

Bunun bazı tarayıcılarda işe yaramayacağını unutmayın. Özellikle ben ile başlayan ve E – Milimetric

+0

@Milimetric Ha ile bitenler, oldukça doğru. Görünüşe göre IE 7'den beri dinamik olmayan bir şekilde çalışmış olsa da (http://www.quirksmode.org/css/contents.html). – DaveGauer

+0

[Bu jsFiddle] 'da (http://jsfiddle.net/BGCQe/), tüm p etiketlerinin sadece ilkini değil, – ExtraGravy

2
<script> 
$(function(){ 
    $('#content p:first').css('color','yellow'); 
}); 
</script> 
1
$('#content p').first().css({ color: 'yellow' }); 
1

bu deneyin:

$("div p:first") 
     .css("text-decoration", "underline") 
     .hover(function() { 
       $(this).addClass("sogreen"); 
      }, function() { 
       $(this).removeClass("sogreen"); 
      }); 
4

de kullanabilirsiniz (CSS, jQuery) nth-of-type:

#content p:nth-of-type(1) {color:yellow; } 

$('#content p:nth-of-type(1)').css('color', 'yellow'); 
20

bir css3 çözüm

#content > p:first-of-type { color: yellow; } 
+0

Sadece bunu kullandım. – Cris

İlgili konular