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>