我只是遇到了这个相当烦人的问题而且我真的错过了为什么会发生这种行为的一些解释 - 最重要的是如何绕过它。
我有一些动态内容是使用jQuery在某个事件上创建的。创建内容时,会向元素添加on("click")
事件侦听器,以停止元素的传播:e.stopPropagation()
。
但是,由于该元素包含我希望控制的锚标记,我想在锚标记中添加e.preventDefault()
- 但似乎e.stopPropagation()
取消了e.preventDefault()
。
问题重新创建如下:
$(document).on("click", ".test-a, .test-b", function(e){
e.preventDefault();
alert("test");
});
$("body").append('<a class="test-a" href="#">Click this to see what happens when e.stopPropgation() is active (nothing)</a>');
$("body").append('<a class="test-b" href="#">Click this to see what happens when only e.preventDefault() is active</a>');
$(".test-a").on("click", function(e){
e.stopPropagation();
})
&#13;
a{
display:block;
margin-bottom: 40px;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;