【发布时间】:2019-10-10 00:23:45
【问题描述】:
所以,我有一个主 div(模态容器),它占据一整页并在主 div 内部,并有另一个 div(模态内部)和两个按钮。主 DIV 设置为页面的全高/全宽,并且在 DIV(模态内部)内部具有 calc(100% - 40px) 屏幕宽度。
通过 Jquery,我在每个按钮单击事件上添加了两个函数,例如 jq-button-ok 和 jq-button-cancel。现在,当我尝试将单击事件添加到模态容器中时,它也会同时调用两个按钮单击功能。解决办法是什么?
HTML:
<div class="modal-container" role="dialog">
<div class="modal-inner" role="document">
<div class="modal-content">
<div class="modal-body">
<button class="button jq-button-ok">OK</button>
<button class="button jq-button-cancel">Cancel</button>
</div>
</div>
</div>
</div>
CSS:
.modal-container {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 102;
background: rgba(216,216,216,.25);
transition: 0.3s opacity ease-in;
opacity: 1;
}
.modal-inner {
position: static;
width: 500px;
height: auto;
max-width: calc(100% - 20px);
transition: none;
transform: none;
}
jquery:
$(document).ready(function () {
$("body").on("click", ".jq-button-ok", function (e) {
e.preventDefault();
callfunstionone();
});
$("body").on("click", ".jq-button-cancel", function (e) {
e.preventDefault();
callfunstiontwo();
});
$("body").on("click", ".modal-container:not(.modal-inner)", function (e) {
callfunstionfour();
});
});
【问题讨论】:
-
为什么不对外部/内部按钮使用不同的类?
-
你实际上并没有问过问题。
-
这听起来像是你误解了选择器
.modal-container:not(.modal-inner)的作用。您是否认为这是一种仅将该单击处理程序绑定到.modal-container的方法,但在单击任何后代时不会触发它?事情不是这样运作的。事件冒泡 DOM,除非你对它做点什么。
标签: javascript jquery html css