【发布时间】:2020-07-07 16:56:47
【问题描述】:
当单击选择器 A 或在选择器 B 之外时,我希望选择器 B 为 .toggle()。这很简单。
但是,我不希望选择器 B 回到 .toggle(),除非单击选择器 A - 当您在选择器 A 或 B 之外单击时不会。这是我无法弄清楚的部分。
$(document).ready(function() {
var Container = $(".redBar"); // Container (selector A)
function Toggle() {
Container.toggleClass("hide"); // Toggle Container with display none selector [to hide selector B]
}
// If selector B is visible
if ($(Container).is(":visible")) {
// On click of the document and selector A
$(document, ".toggleBar").on("click", function(event) {
// If the target of the click isn't selector A nor a descendant of selector A
if (!Container.is(event.target) && Container.has(event.target).length === 0) {
Toggle();
}
});
}
});
/* Selector A */
.toggleBar {
width: 150px;
color: blue;
text-transform: uppercase;
font-weight: bold;
}
.toggleBar:hover {
text-decoration: underline;
cursor: pointer;
}
/* Selector B */
.redBar {
width: 300px;
height: 50px;
color: white;
text-transform: uppercase;
font-weight: bold;
background-color: red;
}
.hide {
display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="redBarContainer">
<!-- selector A -->
<div class="toggleBar">toggle bar</div>
<!-- selector B -->
<div class="redBar"></div>
</div>
【问题讨论】:
-
$(document, ".toggleBar").on("click", function(event) {没有意义。不知道为什么要使用元素的上下文。
标签: javascript html jquery css frontend