Javascript jQuery 3.x.off()在.on()之后
我只是在.click()方法的.on()方法之后使用了.off()方法。Javascript jQuery 3.x.off()在.on()之后,javascript,jquery,jquery-3,Javascript,Jquery,Jquery 3,我只是在.click()方法的.on()方法之后使用了.off()方法。 我真的很困惑为什么单击()事件会触发 $('span').on('click',function(){$('p').text(“youclicked!”)}); $('span').off('click',函数(){ $('p').text(“哈哈哈!”)} span{ 背景色:#ac0; 填充物:5px; 光标:指针; } 点击我! *****您试图删除的处理程序函数与最初分配的不同 相反,创建对函数的引用,并通过该
我真的很困惑为什么单击()事件会触发
$('span').on('click',function(){$('p').text(“youclicked!”)});
$('span').off('click',函数(){
$('p').text(“哈哈哈!”)}代码>
span{
背景色:#ac0;
填充物:5px;
光标:指针;
}
点击我!
*****
您试图删除的处理程序函数与最初分配的不同
相反,创建对函数的引用,并通过该引用添加/删除它:
var clickHandler = function () { $('p').text("You Clicked!") };
$('span').on('click', clickHandler);
$('span').off('click', clickHandler);
您误解了off()
方法末尾的函数的作用。它不是回调,而是事件处理程序
该函数应与最初设置的事件处理程序函数相同。这样做是为了可以删除单个单击处理程序
function handlerA(e) {
console.log('heard by A');
}
function handlerB(e) {
console.log('heard by B');
}
// add both handlers to click events
$('span').on('click', handlerA);
$('span').on('click', handlerB);
// remove the first click event only, leaving the second
$('span').off('click', handlerA);
单击时,上述内容仅记录B听到的
要删除所有单击处理程序,需要完全省略该函数
$('span').off('click');
@SalmanShariati别忘了标记一个正确答案