首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >混淆了事件冒泡和stopPropagation,然后允许冒泡

混淆了事件冒泡和stopPropagation,然后允许冒泡
EN

Stack Overflow用户
提问于 2012-09-24 13:15:25
回答 2查看 141关注 0票数 0

我的菜单是这样工作的:每个菜单项(例如,下面的菜单项)都在嵌套在另一个<td>中的表的<td>中。外部<td>有一些onclick事件处理程序(这里称为"processMenuClick()")。

代码语言:javascript
复制
<td onClick="processMenuClick(<item-dependent-arguments>);">
    <table>
        <tr>
            <td class="innermenuitem">Menu Item One</td>
       </tr>
    </table></td>

在某些情况下,我希望阻止菜单对单击做出响应。为了测试它是如何工作的,我做了两个按钮。将event.stopPropagation应用于"innermenuitem“类的每个<td>,如下所示:

代码语言:javascript
复制
<button onclick="javascript:stopit()">Test the disable menu functionality</button>

<script type="text/javascript">
function stopit()
{
    $("td.innermenuitem").click(function(event)
    {
        event.stopPropagation();
    })
}
</script>

这似乎工作得很好。当我单击按钮时,菜单将停止对单击的响应。但现在假设我想重新启用菜单。单击处理程序在外部<td>中仍未受到干扰。所以我想让我的第二个按钮禁用我应用于内部<td>的stopPropagation。这有意义吗?如果是这样,它是如何做到的?

注意:注意,上面应该允许我禁用菜单并重新启用它,而不必将外部<td>重新绑定到它的处理程序。这一点很重要,因为传递给"processMenuClick()“的参数只在服务器上是已知的。如果我不得不重新绑定处理程序,我必须想出一种方法通过某种回发来调用它们。但我想,既然我所做的就是停止将事件从内部<td>冒泡起来,假设有一种方法可以撤销这一点(并允许事件再次冒泡),那么我应该是金子。但在阅读其他帖子时,我发现stopPropagation似乎只用于一个事件,而不是我想的那样,这基本上就像<td>上的一个“状态”。有人能帮我纠正一下吗?(希望能解决我在这里仔细描述的问题?)谢谢。

Paragram

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-24 13:19:47

代码语言:javascript
复制
function startIt(){
     $('td.innermenuitem').off('click');
}

stop it应该与on方法绑定,以使其尽可能简单。

代码语言:javascript
复制
function stopIt(){
    $('td.innermenuitem').on('click', function(event){
       event.stopPropagation();
    });
}
票数 1
EN

Stack Overflow用户

发布于 2017-09-29 02:19:27

还有一种不使用jQuery的方法:

dataSend发送ajax请求

onclick中,您可以访问事件,因此在调用之后,可以使用event.stopPropagation();停止冒泡

如果没有stopPropagation,则还将激活div“%1”中的单击事件

代码语言:javascript
复制
<div id='1' class='mnb_bookinfo' 
onclick='dataSend(cBookInfo,34)';>

<div id='2' class='mnb_bookedit' 
onclick="dataSend(cBookEdit,34);event.stopPropagation();">
<img src='misc/mnb/icon_edit.svg' width=32 height=32>
</div>

</div>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12559183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档