我希望将第二个函数绑定和取消绑定到事件,而不会影响第一个函数。例如:
我有一个具有标准onclick事件的按钮:
<input type="button" onclick="myFunction();" id="my_button" value="Click Me" />
我想将第二个函数绑定到它,以便在单击按钮时触发这两个函数:
$('#my_button').on('click',myOtherFunction());
我希望第二个功能仅在第一次单击时触发,因此我想在myOtherFunction()中包含一行来删除第二个绑定:
$('#my_button').off('click');
但是我不想关闭原始操作 - myFunction() - 然后再次绑定它,因为它似乎会使代码变得更加混乱,如果我想要有错误的风险在将来更改默认按钮单击。
在不影响第一个函数的情况下,是否有一种干净的方法可以绑定和解除第二个函数的绑定?
答案 0 :(得分:2)
您是否尝试过使用.one
jQuery功能?它将作为.on
工作,但在执行函数后取消注册侦听器。
$('#my_button').one('click',myOtherFunction);
无论如何,我建议绑定JS代码中的第一个函数而不是HTML(如果可以的话)。
$('#my_button')
.on('click',myFunction)
.one('click',myOtherFunction);
答案 1 :(得分:1)
你提出的方式不是一个很好的方法。
将两个函数绑定到.on()
回调,但使用数据确保它只运行一次。
分别给定函数one()
和all()
:
$('#my_button').on('click', function () {
if (!$(this).data('one-ran')) {
$(this).data('one-ran', 1);
one();
}
all();
});
答案 2 :(得分:0)
我认为解决此问题的方法是实例化点击计数器:
var click = 0
$('#my_button).on('click', function(){
if (click >= 1){
// execute code for second function
}
// execute first function
click++
})
我的JS有点生疏,但有些效果