私は、ユーザが特に有効にしない限り、表示したくないいくつかのオプションのフィールドを持つフォームを持っています。私はいくつかのガイダンスを期待して、jQueryの.closest()
メソッドを理解するのに苦労しています。このように複数の形式があるので、私はDRYのために#idを私たちに欲していませんでした。fadeIn/fadeOutチェックボックスがチェックされたときに最も近いdiv
$('.enable-stage').change(function() {
if ($(this).is(':checked')) {
$(this).closest('.stage-dates').fadeIn("slow").toggleClass("hidden");
} else {
$(this).closest('.stage-dates').fadeOut("slow").toggleClass("hidden");
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="stage">
<h3>Stage Name</h3>
<label><input type="checkbox" class="enable-stage"> Enable Stage</label>
<div class="stage-dates hidden">
<input type="date">
</div>
</div>
if
内部console.log("checked")
とconsole.log("unchecked")
を使用した場合、それが動作するので、私は一般的なif
文が働いている知っています。私は.closest
メソッドを誤って扱っていると思いますが、どのように/なぜかわかりません。
編集:明確にするため、チェックボックスをオンにすると最も近い.stage-dates
divがフェードインされ、チェックが外されるとフェードアウトされます。
をターゲットに
$.next()
を使用し、その後、最も近いlabel
を見つけることができます(PREVを使用してみましたが)、次の( )の代わりに最も近い? –@cup_ofが最終的に解決策の一部になった、良いアイデア! – crescentfresh