jquery 命名空间 重新 再次 绑定 事件
在jquery中使用on或者直接使用click类似这样的事件实现业务逻辑在正常不过,在使用off或者unbind解除指定的事件就无法在工作了。
这时候如果我们再次绑定刚刚解除的事件发现,无论在怎么绑定已经无效了,例如:
function run(){
alert(1);
}
$('#bt0').on('click',run);
为#bt0绑定一个click事件
$('#bt3').click(function(){
$('#bt0').off('click');为#bt0解除一个click事件
});
以上代码如果一旦点击了解除#bt0解除一个click事件之后,不管在点击j几次或者重新为#bt0创建几次click事件都没有效果了。
如果我们再次希望为解除了绑定的#bt0再次绑定上click事件,我们可以这么做:
function run(){
alert(1);
}
var clicknum=0;
$('#bt0').on('click.'+clicknum,run); //当前绑定的名称是click.0
$('#bt3').click(function(){
$('#bt0').off('click.'+clicknum); //解除绑定的是click.0
clicknum=clicknum==0?1:0; //如果之前是0那么就改为1,则反之
$('#bt0').on('click.'+clicknum,run); //又重新绑定一个click.1的事件
});
···················································································································
还有更简单的方法,利用<button>的disabled属性
//以下按钮不会弹窗,只要删除disabled就可以执行click
<button type="button" disabled="disabled" onclick="alert('1')">Click Me!</button>