我有一个按钮,上面有两个点击处理程序:
他们是基于jQuery的,看起来像这样:
$('[data-confirm]').on('click', function (e) {
if (! confirm($(this).data('confirm')) {
e.preventDefault();
e.stopImmediatePropagation();
}
});
$('.js-remove-item').on('click', function (e) {
e.preventDefault();
console.log('clicked');
var $form = $('#remove-item-form');
$form.attr('action', $(this).data('url'));
$form.submit();
});
按钮HTML如下所示:
<button type="button"
class="btn btn-primary js-remove-item"
data-confirm="Are you sure you want to remove this item?">
但是,当显示确认对话框时,控制台会“点击”。我只希望在用户确认操作时触发该事件监听器。
我该怎么做?
答案 0 :(得分:0)
找出解决方案。
对于“删除项目”逻辑,我没有将类添加到按钮本身,而是将其添加到父元素。使用冒泡,表示按钮本身上的任何侦听器都被触发(确认对话框)。如果该事件传播,它将对其父节点执行此操作,该父节点具有“删除项目”类名和逻辑绑定。