即使使用 stopPropagation,onMouseLeave 也会触发警报两次
onMouseLeave trigger alert twice even with stopPropagation
$('.pool').on('mouseleave', function (e) {
var el = $(this).find('.pool-row').find('input[type=submit]');
if (el.length)
alert('bla bla bla');
e.stopImmediatePropagation();
e.stopPropagation();
return;
});
即使使用 stopPropagation 或 preventDefault 和“return;”,警报也会在 mouseleave 上触发两次。
[已解决]
触发第二个警报是因为父元素上有另一个 mouseleave 事件,并且 alert() 触发了 'mouseleave'.
我对你的脚本进行了一些快速修改,似乎它不会触发两次警报!
$('.pool').on('mouseleave', function (e) {
e.stopPropagation()
var el = $(this).find('input[type="submit"]')
if (el.length)
alert('bla bla bla')
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="pool">
<p>This is a pool</p>
<input type="submit">
</div>
$('.pool').on('mouseleave', function (e) {
var el = $(this).find('.pool-row').find('input[type=submit]');
if (el.length)
alert('bla bla bla');
e.stopImmediatePropagation();
e.stopPropagation();
return;
});
即使使用 stopPropagation 或 preventDefault 和“return;”,警报也会在 mouseleave 上触发两次。
[已解决] 触发第二个警报是因为父元素上有另一个 mouseleave 事件,并且 alert() 触发了 'mouseleave'.
我对你的脚本进行了一些快速修改,似乎它不会触发两次警报!
$('.pool').on('mouseleave', function (e) {
e.stopPropagation()
var el = $(this).find('input[type="submit"]')
if (el.length)
alert('bla bla bla')
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="pool">
<p>This is a pool</p>
<input type="submit">
</div>