如何在单击其他元素时阻止div.click事件

时间:2013-12-14 18:05:45

标签: javascript jquery

我想阻止点击事件,但e.stopPropagation()不起作用。

我正在尝试写一些类似Jtable的东西。我使用div作为分页按钮(1),另一个元素是删除按钮。

我需要在弹出删除确认框时禁用分页按钮。点击del或取消“我希望我的分页按钮再次工作”。 有什么解决方案吗? enter image description here

function deleteit() {
  $(".del").click(function() {
    $(".divbutton").click(function(e) {
    alert(1);   
    e.stopPropagation(); 
  });
}

$(".deletebtn").click(function() {
  deleteit();
});

$(".divbutton").click(function() { // I want to prevent this from click
  //ajax send and display data
});

我知道我应该使用输入禁用而不是div,但我需要使用div。 编辑:添加图片以使其易于理解。

1 个答案:

答案 0 :(得分:1)

而不是阻止点击处理程序...使用.off()删除已注册的处理程序,此处使用namespaced event name,因为我们只想删除一个非常特定的处理程序

function deleteit() {
    $(".del").click(function () {
        $(".divbutton").off('click.delete')
    })
}

$(".deletebtn").click(function () {
    deleteit();
});

$(".divbutton").on('click.delete', function () { // I want to prevent this from click
    //ajax send and display data
});

为什么你的代码不起作用?因为停止传播会阻止事件的冒泡,但在你的情况下,事件都会注册到divbutton,因此即使传播被阻止,它们也会被触发。

另一种方法是使用stopImmediatePropagation(),即使这是不可能的,因为你的删除稍后会注册处理程序,只有在第一个被调用后才能执行