我有一个清除列表的按钮,单击此按钮会显示一个要求验证的对话框(是/否)。我想要的是清除列表后禁用“清除”按钮(单击是)。这是我的代码:
$('#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()函数似乎不起作用。
答案 0 :(得分:5)
首先永远不会嵌套事件处理程序。
$('#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);
完全删除最里面的事件..这不是必需的。
如果您希望启用按钮但使用on
off
绑定事件
您还有一个选择是在按下时将一个类应用于按钮,并仅在该类不存在时执行代码。
$('#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);
});
答案 1 :(得分:0)
要禁用按钮,请使用参数prop
调用true
函数:
$('#cleatBtn').prop("disabled", true);
答案 2 :(得分:0)
e.preventDefault();是取消事件的正确方法。一些旧的浏览器也期望返回类型为false。我认为这会导致jQuery调用preventDefault()?
这是一个很好的答案:What's the effect of adding 'return false' to a click event listener?
我认为你的结构看起来有点奇怪。您不需要在点击事件中附加点击事件。
只需将它们全部分别附加到document.ready事件上即可。目前它们是嵌套的,然后返回尝试取消您的活动。 dom树可能会被事件嵌套的方式弄糊涂。
希望有所帮助。