クリックするとdiv内のフォームがスライドダウンし、もう一度クリックするとスライドアップするアンカーがあります。最初は .toggle を使用していましたが、現在は複数のアンカーと同じクラスの複数の div があるため、コードを作り直すか、いずれかのアンカーをクリックするとすべての div がスライドダウンし、4 つのフォームが表示されます。
ということで、コードを .closest で書き直せばいいと思ったのですが、うまくいかないようです。.closest は DOM 階層を上る必要があるためだと思います。そのため、レイアウトされているように div では機能しません。私は .sibling を試しましたが、それもうまくいきません。何か案は?
<a href="#" class="payment-form-show">Pre-Pay with Credit Card</a>
<div style="display: none;" class="payment-form-wrapper">
<h3><?php _e('Submit a Payment', 'jc_stripe'); ?></h3>
<form action="" method="POST" id="stripe-payment-form" class="payment-form">
...
</form>
</div>
<script>
$("a.payment-form-show").click(function() {
var e = $(this).closest("div.payment-form-wrapper");
if (e.is(":hidden")) {
e.slideDown("slow");
$(this).html("Don't Pre-Pay with Credit Card")
} else {
e.slideUp("slow");
$(this).html("Pre-Pay with Credit Card")
}
return false;
});
</script>