Это может обеспечить решение, но мне не хватает информации, чтобы объяснить почему.
Недавно я столкнулся с проблемой, в которой предотвратительная защита не работает в аналогичном коде, и проблема заключается в делегировании от $(document) vs $('body')
, попробуйте следующее:
<a href="http://stackoverflow.com" id="test1">Test 1</a>
<a href="http://stackoverflow.com" id="test2">Test 2</a>
<script>
$('body').on('click', '#test1', function(e) {
e.preventDefault();
alert('hi 1');
});
$(document).on('click', '#test2', function(e) {
e.preventDefault();
alert('hi 2');
});
</script>
Этого не происходит, однако с jQuery 3.2.1, я могу только подтвердить, что это проблема с 2.1.7