我可以't阻止JQuery上的按钮单击事件

I can't prevent a button click event on JQuery

本文关键字:按钮 单击 事件 JQuery 阻止 我可以      更新时间:2024-06-14

我有一个清除列表的按钮,单击该按钮会显示一个要求验证的对话框(是/否)。我想要的是在清除列表后禁用"清除"按钮(单击"是")。这是我的代码:

$('#clearBtn').click(function() {
    $('#alert5').show();
    $('#bg').show();
    $('#Yes').click(function(){
        $('.list1').empty();
        $('#clearBtn').disable(true);
        $('#clearBtn').click(function(e){
            e.preventDefault();
        });
        $(".alert").fadeOut(250);
        $(".alertbg").fadeOut(250);
    });
}); 

preventDefault()函数似乎不起作用。

第一个从不嵌套事件处理程序

$('#cleatBtn').click(function () {
    $('#alert5').show();
    $('#bg').show();
});
$('#Yes').click(function () {
    $('.list1').empty();
    $('#cleatBtn').attr('disabled', true);
    $(".alert").fadeOut(250);
    $(".alertbg").fadeOut(250);
});

如果您只想禁用,请使用以下语法

 $('#cleatBtn').attr('disabled', true);

完全删除最里面的事件。。这不是必须的。

如果希望启用按钮但使用off 关闭事件处理程序,请使用on绑定事件

还有一个选项是,当您按下yes时,将类应用于按钮,并且仅当该类不存在时才执行代码。

 $('#cleatBtn').click(function () {
       if( !$(this).hasClass('active')) {
           $('#alert5').show();
           $('#bg').show();
        }
    });
    $('#Yes').click(function () {
        $('.list1').empty();
        $('#cleatBtn').attr('disabled', true);
        $('#cleatBtn').addClass('active');
        $(".alert").fadeOut(250);
        $(".alertbg").fadeOut(250);
    });
要禁用按钮,请调用带有参数trueprop函数:
$('#cleatBtn').prop("disabled", true);

e.preventDefault();是取消活动的正确方式。一些较旧的浏览器也期望返回类型为false。我认为这将导致jQuery调用preventDefault()?

这里有一个很好的答案:What';s添加';return false';点击事件监听器?

我觉得你的结构看起来有点奇怪。您不需要在单击事件中附加单击事件。

只需将它们单独附在文档上即可。准备活动。在它们嵌套的那一刻,然后返回尝试取消您的活动。dom树可能会被事件的嵌套方式弄糊涂。

希望能有所帮助。