javascript - 重新绑定与 .off() 方法 jQuery 未绑定的事件处理程序
问题描述
我有一个元素,我们称之为它div1
,我将一个事件“click”绑定到它,以便它在单击时运行一些代码。然后我有另一个元素,让我们div2
在单击它时调用它,它运行这行代码:div1.off('click');
所以现在div1
单击事件处理程序已成功解除绑定。
这工作得很好,但是我想div1
稍后在第三个 div 点击事件上“重新绑定”这个点击事件。
我在任何地方都找不到如何重新绑定我称为 .off() 的点击事件。有谁知道我怎么能做到这一点?
我试过的:
div1.one('click',function() {
...some code
});
div2.on('click',function() {
...some code
div1.off('click');
});
//all good so far
div3.on('click',function() {
...some code
div1.on('click'); //this is the part which is obviously wrong i just put it to show my intentions - this line needs to "rebind" the div1 click event
});
解决方案
您应该为您的一键创建一个功能,例如您可以在点击后myfunc
重新绑定div1
div3
let div1 = $('#div1');
let div2 = $('#div2');
let div3 = $('#div3');
function myfunc() {
alert('Haha!')
}
div1.one('click', myfunc);
div2.one('click', function() {
console.log('off')
div1.off('click', myfunc);
});
div3.one('click', function() {
console.log('on')
div1.on('click', myfunc);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="div1">div1</div>
<div id="div2">div2</div>
<div id="div3">div3</div>
这是使用示例bind
,unbind
在这种情况下:
let div1 = $('#div1');
let div2 = $('#div2');
let div3 = $('#div3');
function myfunc() {
alert('Haha!')
}
div1.one('click', myfunc);
div2.bind('click', function() {
console.log('off')
div1.unbind('click');
});
div3.bind('click', function() {
console.log('on')
div1.bind('click', myfunc);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="div1">div1</div>
<div id="div2">div2</div>
<div id="div3">div3</div>
推荐阅读
- laravel - 如何使用数据透视表中的数据过滤 Eloquent 集合
- android - BottomNavigationView 项目背景
- r - 更改 likert() 绘图颜色
- python - ValueError:无法创建张量
- java - 如果我的变量初始化为 0,如何在我的方法中执行循环?
- ios - Xcode Accessibility Inspector 未显示命中区域
- c - 将 memset 与未初始化的变量一起使用
- vue.js - 在 Nuxt/Vue 模板中更改正文样式
- regex - Express Router Regex - 如何在正则表达式中使用点 (.)?
- database-design - 此表关系是否有效/良好做法?