作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试让切换模式即使在单击时也保持打开状态。它内部也有多个元素,如果单击其中一个元素,它仍然需要保持打开状态。我问了一个关于点击事件和 event.target 的类似问题:close modal on click on body这是在此基础上构建的。
我弄清楚了上一个问题,这给我留下了这个:
$(function(e) {
$("#filter-button").click(function(e) {
$(".dialog").toggleClass("show");
});
$(window).click(function(e) {
if((e.target.tagName.toLowerCase() != 'button') && ($(".dialog").hasClass("show"))) {
$(".dialog").removeClass("show");
} else if (e.target.className.toLowerCase() == 'dialog') {
return false;
}
});
});
.dialog {
display: none;
width: 300px;
height: 300px;
background-color: red;
}
.show {
display: block !important;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="filter-button">SHOW/HIDE</button>
<div class="dialog">
<h1>Hi</h1>
<ul>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
</ul>
</div>
为了解释我想要做什么 - 如果窗口中单击事件中的第一个事件目标不是按钮并且显示对话框,则将其删除(预期功能) - 我现在需要保留它如果在内部单击则打开。
我的尝试是这件作品:
...
else if (e.target.className.toLowerCase() == 'dialog') {
return false;
}
...
我认为将会发生的是,如果单击 div,它将返回: false;
并保持打开状态,从而防止对话框关闭。但无论如何它都会关闭。我还需要以某种方式定位其中的所有元素。
我现在不确定如何继续前进?我是否需要以某种方式包含对话框中的所有元素?
最佳答案
您需要阻止事件向上冒泡到父元素(这将按预期关闭模式)。您可以使用以下代码来做到这一点:
$('.dialog').click(function(event) {
event.stopPropagation();
});
关于javascript - 尽管点击了模态框仍保持打开状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50747242/
我来自 Asp.Net 世界,试图理解 Angular State 的含义。 什么是 Angular 状态?它类似于Asp.Net中的ascx组件吗?是子页面吗?它类似于工作流程状态吗? 我听到很多人
我一直在寻找 3 态拨动开关,但运气不佳。 基本上我需要一个具有以下状态的开关: |开 |不适用 |关 | slider 默认从中间开始,一旦用户向左或向右滑动,就无法回到N/A(未回答)状态。 有人
我是一名优秀的程序员,十分优秀!