1

我一直在编写一个页面并遇到一些我不明白的东西。

目标是在按下按钮时禁用上下文菜单并稍后再次启用它。

第一个示例禁用了上下文菜单,但之后无法再次启用它。

注意: 'off' 命令显然不是在'on' 命令之后立即运行的,我只是将相关代码拉出来以方便读者阅读。

有人可以向我解释为什么这不起作用:

$(document).on("contextmenu",function(e){return false;});
$(document).off("contextmenu",function(e){return false;});

但这确实:

function returnFalse(e) {        
    return false;
}
$(document).on("contextmenu",returnFalse);
$(document).off("contextmenu",returnFalse);
4

2 回答 2

1

不起作用的方式是因为你说“在上下文菜单上,运行这个匿名函数”。然后你说“关闭上下文菜单,不要做这个新的匿名功能”

每当您编写匿名函数时,它本质上都是一个新函数,因此您以后无法引用它。

你必须保存你的函数供以后使用,所以 jQuery 知道实际删除哪个函数。

于 2013-09-13T02:21:38.937 回答
1

因为off删除了一个实际上作为处理程序附加到元素的函数。在您的第一个示例中,您试图删除从未作为处理程序附加的传真匿名函数。

于 2013-09-13T02:21:45.717 回答