これをどう書けばいいのか分かりません。
ページ上で複数回繰り返される私のマークアップ構造を参照してください。
<div class="module">
<div class="archive-info">
<span class="archive-meta">
open
</span>
</div>
<div class="archive-meta-slide">
</div>
</div>
<span>
私のマークアップの中にあるのを見ると、$metaButton
これがクリックされるとアニメーションが実行されます。div.archive-meta-slide
これは十分シンプルですが、現在の のみでアニメーションを実行しようとしています。div.module
これはクラスを持つすべてのdivをアニメーション化しますが、現在の のみを使用して"archive-meta-slide"
アニメーション化するのは本当に大変です。div.archive-meta-slide
this
div.archive-meta-slide
が の親 div の内側にあったら簡単です$metaButton
が、この親 div の外側にあるため、正しくトラバースできません。
私のスクリプトを見る
var $metaButton = $("span.archive-meta"),
$metaSlide = $(".archive-meta-slide");
$metaButton.toggle(
function() {
$(this).parent().siblings().find(".archive-meta-slide").animate({ height: "0" }, 300);
$(this).parent().siblings().find(".archive-meta-slide").html("close");
},
function() {
$(this).parent().siblings().find(".archive-meta-slide").animate({ height: "43px" }, 300);
$(this).parent().siblings().find(".archive-meta-slide").html("open");
});
誰か助けてくれませんか?
ありがとう、ジョシュ
ベストアンサー1
$(this).parent().siblings().find(".archive-meta-slide")
これは本当にこれは実際には「この要素の親の兄弟の子孫であるクラスの要素を検索するarchive-meta-slide
」という意味です。つまり「この要素の親の兄弟の子孫であるクラスの要素を検索する」という意味ですarchive-meta-slide
。は「この要素の親の兄弟」。そのためには、呼び出し時にセレクタを使用しますsiblings
。
$(this).parent().siblings(".archive-meta-slide")
マークアップが常にこの構造である場合は、 を実行することもできることに注意してください$(this).parent().next()
。
jQuery API を参照してください: