jQuery - e.stopPropagation () отменяет e.preventDefault () для динамического содержимого - PullRequest
0 голосов
/ 28 мая 2018

Я только что столкнулся с этой довольно раздражающей проблемой, и я действительно упускаю некоторые объяснения того, почему происходит такое поведение - и самое главное , как его обойти .

Iиметь некоторый динамический контент, который создается с использованием 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();
})
a{
display:block;
margin-bottom: 40px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
...