问题:
单击内部div会触发外部div的onClick事件。在本例中,它切换外部<div>、内部<div>和<p>元素的可见性。
我尝试过的:
在内部div上设置z索引高于外部div.没有效果。
HTML:
<div id='messageForm' onClick=toggleMessageForm() >
<div class="innerBox">
<p>Hi!</p>
</div>
</div>JS:
function toggleMessageForm(){
$('#messageForm').toggle();
}注意:我之所以使用toggle()而不是show(),是因为我在最初从原始网页中的一个按钮显示表单时使用的是相同的函数。
发布于 2014-07-11 12:08:04
完全删除onClick属性,然后用jQuery连接处理程序:
$("#messageForm").click(function(evt) {
evt.stopPropagation();
toggleMessageForm();
});将其放在script元素中,在div中低于div(或者将其包装在ready处理程序中)。
evt.stopPropagation取消单击事件的冒泡(停止传播),因此它不会到达父div。
如果您真的非常希望保留onClick属性,则可以这样做:
<div id='messageForm' onClick="toggleMessageForm(event);">...and然后在toggleMessageForm
function toggleMessageForm(evt){
if (evt.stopPropagation) {
evt.stopPropagation();
}
else {
evt.cancelBubble = true;
}
$('#messageForm').toggle();
}...but由于您已经在使用jQuery,这将是不寻常的。
发布于 2014-07-11 12:08:51
使用stopPropagation();
function toggleMessageForm(e){
e.stopPropagation();
$('#messageForm').toggle();
}e.stopPropagation();
防止事件在DOM树上冒泡,防止任何父处理程序被通知该事件。
发布于 2014-07-11 12:15:05
如果您有一个或多个stopImmediatePropagation,单击外部和内部div上的函数,并且只想执行其中一个(例如外部div),请使用jQuery的jQuery函数:
$("#messageForm").click(function(e) {
e.preventDefault();
e.stopImmediatePropagation();
$('#messageForm').toggle();
});https://stackoverflow.com/questions/24697305
复制相似问题