jquery - 如何在greasemonkey 中取消绑定(bind)jquery 事件处理程序?

标签 jquery greasemonkey

$("p").click(function(){alert('clicked')});

$("p").unbind('click');

在greasemonkey中,点击事件不会解除绑定(bind)。我相信这是由 Greasemonkey 的安全模型从 XPCNativeWrapper 中的第一行包装关联的事件对象引起的,导致第二行无法“找到”它。但是,我似乎找不到解决方法。有什么建议吗?

更新:类似下面的东西在greasemonkey中确实有效。所以我仍然认为这是 XPCNativeWrapper 问题,我找不到解决方法。

$("p").click(function(){alert('clicked'); $(this).unbind('click')});

最佳答案

我认为 jQuery 单击事件是在调用 unbind() 函数后添加的。这就是以下代码有效的原因。

$("p").click(function(){alert('clicked'); $(this).unbind('click')});

您的函数会经过一段时间,直到您单击警报按钮,并且 unbind() 函数在您单击“确定”后才起作用。

这是我测试过的解决方案:

function removeClick() {
    $("p").unbind('click');
}

var initTimeout = setTimeout(function() { removeClick(); }, 1000);
<小时/>

如果您不喜欢在 Greasemonkey 脚本中使用超时或间隔,您可以向 p 元素添加 mouseover 事件以删除点击。

$("p").mouseover(function(){
    $(this).unbind('click');
});

关于jquery - 如何在greasemonkey 中取消绑定(bind)jquery 事件处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5436874/

相关文章:

javascript - 检测脚本列表何时全部加载到 javascript 中(使用命名空间)。

jQuery 获取单击元素的宽度存储在变量中

Greasemonkey 上的 Javascript、与 Firefox/Chrome 中的插件相比的约束和限制因素?

firefox - 用户脚本 - 将项目添加到右键单击菜单

javascript - 数据表的问题

javascript - 限制用户在动态生成的文本框中输入特定字符

javascript - 通过存储的数据获取 jQuery 元素

jquery - Tampermonkey 选择下拉值。它没有 ID 或名称,只有一个类?

javascript - Greasemonkey 脚本可以对仅由 HTML 注释分割的页面部分进行重新排序?

javascript - 如何使用 jQuery 模拟在输入字段中的输入?