2017-06-26 9 views
-2

私はdivの異なる要素の子要素に与えるべきjQuery関数が必要です。jQueryは子を取得して番号を与えます

<div class="container"> 
    <div class="autogenerated-div"></div> 
    <div class="autogenerated-div"></div> 
    <div class="autogenerated-div"></div> 
    <div class="autogenerated-div"></div> 
    <div class="autogenerated-div"></div> 
    <div class="autogenerated-div"></div> 
    <div class="autogenerated-div"></div> 
    <div class="autogenerated-div"></div> 
</div> 

コンテナ内のdivが自動的に生成されます。

要素の子供たちは、このCSS属性を持っている必要があります。

First child: animation-delay: 1s; 

Second child: animation-delay: 2s; 

Third child: animation-delay: 3s; 

...

I'veはn番目でそれを試してみました:CSSを経由して、子供が、それはので、私はjQueryのソリューションを必要とする仕事のdidnt 。

+6

と作品罰金* * "私はjQueryのソリューションを必要とします" ..あなたが試したことを見せてください。 Stackoverflowは無料のコード作成サービスではありません。ここの目的はあなたのコード**を修正するのを助けることです**あなたの仕事と研究をしません – charlietfl

+0

これは本当にJavascriptやjQueryを必要としません。それは単に 'nth:child'ではなく':nth-​​child(n) 'です(下の私の答えを見てください。 – connexo

答えて

2

これは希望のCSS属性を追加します。

$(".container>div.autogenerated-div").each(function(index) { 
    $(this).css("animation-delay",(index+1)+"s"); 
}); 

フィドル:https://jsfiddle.net/wxhrks0x/

またはCSSで以下(jQueryのなしで)それを実行します。

@iterations: 8; 
.autogenerated-div-loop (@i) when (@i > 0) { 
    [email protected]{i} { 
    animation-delay: ~"@{i}%"s; 
    } 
    .autogenerated-div-loop(@i - 1); 
} 
.autogenerated-div-loop (@iterations); 
+0

これは直接子の 'div'だけでなく、' .container'の中の全ての 'div'に影響することに注意してください。 jQueryでなければならない場合(この場合は完全に不要ですが、 '.container> .autogenerated-div'をセレクタとして使用するのが安全でしょう) – connexo

+0

これは各プログラマの責任です。表示されている要素にアクセスすることが可能 – zuluk

+0

与えられたコードに8つの子要素があるので、それがあなたの議論に基づいているなら、どうしてあなたはCSSのアプローチを批判しますか?自動生成されたdiv内の子divもヒットしたと言っています。 – connexo

3

本当にこれは何のJavascriptやjQueryのを必要としません。それはちょうどnth:childが、:nth-child(n)ではありません。

.container > :nth-child(1) { 
 
    animation-delay: 1s; 
 
    color: red; 
 
} 
 
.container > :nth-child(2) { 
 
    animation-delay: 2s; 
 
    color: blue; 
 
} 
 
.container > :nth-child(3) { 
 
    animation-delay: 3s; 
 
    color: green; 
 
} 
 
.container > :nth-child(4) { 
 
    animation-delay: 4s; 
 
    color: brown; 
 
}
<div class="container"> 
 
    <div class="autogenerated-div">OOO</div> 
 
    <div class="autogenerated-div">OOO</div> 
 
    <div class="autogenerated-div">OOO</div> 
 
    <div class="autogenerated-div">OOO</div> 
 
    <div class="autogenerated-div">OOO</div> 
 
    <div class="autogenerated-div">OOO</div> 
 
    <div class="autogenerated-div">OOO</div> 
 
    <div class="autogenerated-div">OOO</div> 
 
</div>

+0

HTMLコードが生成されるので、私の意見では、それぞれの 'アニメーション遅延'に対してほぼ同じ4行のコードを書くのは良い選択ではありません。 SOが30.000 divを生成すると想像してください。それから120,000行のCSSコードがあります。 – zuluk

+0

これは有効なポイントです。その場合は、Javascriptの問題を解決する方が良いでしょう(私はまだjQueryを使用しません)。ちょうどいくつかの 'div'の場合は、純粋にCSSベースのソリューションを適用することが、パフォーマンス上も賢明です。また、新しいdivが動的にコンテナに追加されるような状況を考慮してください。毎回jQueryを再実行する必要があります。 – connexo

0

n番目の子

div.autogenerated-div:nth-child(1) { 
 
    width: 20px; 
 
    height: 10px; 
 
    background-color: red; 
 
    animation: newcolor 1s ease; 
 
    animation-delay: 1s; 
 
} 
 

 
div.autogenerated-div:nth-child(2) { 
 
    width: 20px; 
 
    height: 10px; 
 
    background-color: blue; 
 
    animation: newcolor 1s ease; 
 
    animation-delay: 2s; 
 
} 
 

 
div.autogenerated-div:nth-child(3) { 
 
    width: 20px; 
 
    height: 10px; 
 
    background-color: green; 
 
    animation: newcolor 1s ease; 
 
    animation-delay: 3s; 
 
} 
 

 
@keyframes newcolor { 
 
    to { 
 
    background-color: black; 
 
    } 
 
}
<div class="container"> 
 
    <div class="autogenerated-div"></div> 
 
    <div class="autogenerated-div"></div> 
 
    <div class="autogenerated-div"></div> 
 
    <div class="autogenerated-div"></div> 
 
    <div class="autogenerated-div"></div> 
 
    <div class="autogenerated-div"></div> 
 
    <div class="autogenerated-div"></div> 
 
    <div class="autogenerated-div"></div> 
 
</div>

関連する問題