jQuery-e.stopPropagation()取消动态内容上的e.preventDefault()

jQuery-e.stopPropagation()取消动态内容上的e.preventDefault(),jquery,preventdefault,stoppropagation,Jquery,Preventdefault,Stoppropagation,我刚刚遇到了这个相当恼人的问题,我真的没有解释为什么会发生这种行为——最重要的是如何绕过它 我有一些动态内容是在某个事件上使用jQuery创建的。创建内容时,会在元素中添加一个on(“单击”)事件侦听器,从而停止元素的传播:e.stopPropagation() 但是,由于元素包含我希望控制的锚定标记,我想在锚定标记中添加一个e.preventDefault(),但是e.stopPropagation()似乎取消了e.preventDefault() 问题将在下面重新创建: $(文档)。在(“

我刚刚遇到了这个相当恼人的问题,我真的没有解释为什么会发生这种行为——最重要的是如何绕过它

我有一些动态内容是在某个事件上使用jQuery创建的。创建内容时,会在元素中添加一个
on(“单击”)
事件侦听器,从而停止元素的传播:
e.stopPropagation()

但是,由于元素包含我希望控制的锚定标记,我想在锚定标记中添加一个
e.preventDefault()
,但是
e.stopPropagation()
似乎取消了
e.preventDefault()

问题将在下面重新创建:

$(文档)。在(“单击”、“.test-a、.test-b”上,函数(e){
e、 预防默认值();
警报(“测试”);
});
$(“正文”)。附加(“”);
$(“正文”)。附加(“”);
$(“.test-a”)。单击(“click”,函数(e){
e、 停止传播();
})
a{
显示:块;
边缘底部:40px;
}

您可能不应该首先使用stopPropagation@CBroe您可能是对的,但不幸的是内容(以及带有
stopPropagation
的事件侦听器)是从插件添加的。在问题中可能已经提到了这一点。那么,在上面的示例中,到底有什么不同的工作方式呢?@CBroe使用
stopPropagation()
会导致
alert()
不会像inted那样触发。嗯,我想,它是按设计工作的……如果你不能说服插件作者一开始就不这样做,然后我想你最多可以尝试删除插件添加的事件处理程序。(但如果这些功能不仅仅是停止传播,那么您还必须自己重新实现“其余功能”)