[英]jQuery show/hide div if button group pressed
如果.check
所有具有data-target="check"
的輸入,則第一個函數顯示.check
div。
現在,我試圖模仿相同checked / unchecked
的復選框的狀態,並有功能的工作方式相同,但對於buttons
是clicked
,然后un-clicked
按#clear
按鈕。
$('input').on('change', function() { var source = $(this); var target = $('.' + source.attr('data-target')); if ($('input[data-target=' + source.attr('data-target') + ']:checked').length) target.show(); else target.hide(); }); $('button').on('click', function() { var clear = $("#clear"); if ($(this) !== clear) { var source = $(this); var target = $('.' + source.attr('data-target')); if ($('button[data-target=' + source.attr('data-target') + ']').length) target.show(); } else { if ($(this) === clear) { target.hide(); } } });
div { display: none; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input type="checkbox" name="name" data-target="check" value="1"> <input type="checkbox" name="name" data-target="check" value="2"> <input type="checkbox" name="name" data-target="check" value="3"> <button data-target="button" value="4"></button> <button data-target="button" value="5"></button> <button id="clear">clear</button> <div class="check">check</div> <div class="button">button</div>
您正在做一些事情,使它無法正常工作。 一種是您如何比較對象-現在如何使用!$(this).is(clear)
,另一種是您始終在$('button').on
...函數中重新定義目標。 這是它的外觀,為清楚起見,我更改了變量名稱:
var button_target;
$('input').on('change', function() {
var source = $(this);
var target = $('.' + source.attr('data-target'));
if ($('input[data-target=' + source.attr('data-target') + ']:checked').length) target.show();
else target.hide();
});
$('button').on('click', function() {
var clear = $("#clear");
if (!$(this).is(clear)) {
var source = $(this);
button_target = $('.' + source.attr('data-target'));
if ($('button[data-target=' + source.attr('data-target') + ']').length) button_target.show();
} else {
if ($(this).is(clear)) {
button_target.hide();
}
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.