私は、テキスト記事と画像を含むDIVがあるWebサイトを開発しています(これらのDIVはすべてクラス.article
である)。 要素がビューポートにスクロールされてアニメーション化されたことを検出するライブラリを使用していますが、処理中に要素に.aos-animate
クラスが追加されています。4th-parent hasClassの場合にDIVにクラスを追加
ID #divider
とクラス.dv
を持つ.article
のすべてにDIVがあります。このようなdivは、塗りつぶし色のある平らな水平線です。これはデザインのためだけにあり、デフォルトでは幅は0pxです。
私は何をしたい、.article
はクラス.aos-animate
があり、それはそれを持っている場合、その.article
内部に含まれる#divider
をターゲットと#dividerの幅を設定しますどのクラス.dv-expand
を(追加する場合、何とかチェックしています〜100px。これは素晴らしいアニメーション機能です)。
私は、ページのスクロールでトリガ、最初にこれを試してみました:
if ($('.article').hasClass('aos-animate')) {
$('.dv').addClass('dv-expand');
}
しかし、文書内のすべての.dv
秒に.dv-expand
クラスを適用しています。 だから、すべての.articles
をスキャンし、それがクラス.aos-animate
を持っており、THEN DIVが選択されたことを有するものを見つけたときに停止し、ID #divide
(またはクラス.dv
)とその子要素を見つけ、それにクラスを適用する機能を反復処理する方法があります?ところで
が、これは.article
が私の文書でどのように見えるかです:
<!-- Article 1 -->
<div id="at-1" class="article" data-aos="fade-up" data-aos-anchor-placement="top-center"> <!-- THIS IS THE DIV TO CHECK FOR AOS-ANIMATE CLASS -->
<div id="tx-c-g">
<div id="c-title">
<p id="t-1" class="title">LOREM IPSUM DOLOR</p>
</div>
<div id="c-subset">
<div id="c-span">
<div id="divider" class="dv"></div> <!-- THIS IS THE DIV TO addClass('dv-expand') -->
</div>
<div id="c-plain" class="at-padd">
<p id="pl-1" class="subtitle">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
</div>
</div>
</div>
</div>
<!-- Article 1 End -->
私は、ページごとに、現在10件の記事を持っていますが、それらはすべて同じHTML、テキストのみのコンテンツの変更を持っています。
申し訳ありませんタイトルが十分に具体的でない場合は、この状況を説明するための簡単な方法は見つかりませんでした。
にあなたのコードを変更し、また
if
条件を必要としないおかげで、確かに、そのような特定のセレクタを使用するのと同じくらい簡単でした。 –