2016-08-25 6 views

回答

1

使用jQuery:

$(".my-class").filter(":odd").css("background","red"); 
 
$(".my-class").filter(":even").css("background","blue");
.common { padding: 20px 0; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<section class="my-class common"></section> 
 

 
    <div class=""> 
 
     <section class="my-class common"></section> 
 
    </div> 
 

 
    <div class=""> 
 
     <div> 
 
      <section class="my-class common"></section> 
 
     </div> 
 
    </div> 
 

 
    <section class="my-class common"></section>

+0

有了這段代碼,如果你添加更多的'div'序列不符合:https://jsfiddle.net/blonfu/xL4qsvsx/3/ – blonfu

+0

@blonfu他說,在體內的順序,而不是內部父div的順序身體。 –

+0

好吧,你是對的,我誤解了這個問題。 – blonfu

4

這是不可能與CSS選擇器。去用JavaScript:

Array.prototype.forEach.call(document.querySelectorAll('.my-class'), function(c, i){ 
    c.style.backgroundColor = i%2 === 0 ? "tomato" : "skyblue"; 
}); 

Working Fiddle

使用jQuery:

$('.my-class:even').css({'background-color': 'tomato'}); 
$('.my-class:odd').css({'background-color': 'skyblue'}); 

或者更好的是添加類,使用JavaScript/jQuery的,像my-class--oddmy-class--even持有的樣式。

1

有可能僅適用於使用nth-child CSS和直接子選擇:

body > div, 
 
body > section, 
 
body > section > div { 
 
    border: solid 1px green; 
 
    margin: 5px; 
 
    padding: 5px; 
 
    background: #aaa; 
 
} 
 

 
body > .my-class:nth-child(odd), 
 
body > :nth-child(odd) .my-class { 
 
    color: white; 
 
    background: red; 
 
} 
 

 
body > .my-class:nth-child(even), 
 
body > :nth-child(even) .my-class { 
 
    color: white; 
 
    background: blue; 
 
}
<div class="my-class">.my-class (first)</div> 
 
<div>div 
 
    <div class="my-class">.my-class (second)</div> 
 
</div> 
 
<section>section 
 
    <div>div 
 
    <div class="my-class">.my-class (third)</div> 
 
    </div> 
 
</section> 
 
<div class="my-class">.my-class (fourth)</div>