我想阻止点击事件,但e.stopPropagation()
不起作用。
我正在尝试写一些类似Jtable的东西。我使用div作为分页按钮(1),另一个元素是删除按钮。
我需要在弹出删除确认框时禁用分页按钮。点击del或取消“我希望我的分页按钮再次工作”。 有什么解决方案吗?
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。 编辑:添加图片以使其易于理解。
答案 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(),即使这是不可能的,因为你的删除稍后会注册处理程序,只有在第一个被调用后才能执行