【发布时间】:2012-04-06 01:10:10
【问题描述】:
有一个页面在页面脚本中定义了悬停事件:
$(".post.fade").hover(function () {
$(this).addClass("over");
},function () {
$(this).removeClass("over");
});
我想删除那个处理程序,因为它很烦人。然而,尽管$(".post.fade").unbind(); 在 Firebug 控制台内部工作,但它不能来自 Greasemonekey。我确定 jQuery 已正确加载,因为 $(".post.fade").remove(): 确实有效。
我想 Greasemonkey 无权访问页面的事件处理程序或其他东西。我试过 unsafeWindow 但它仍然不起作用。
有什么办法吗?
编辑:
显然,解决方案是将代码放入$(document).ready()。不过不知道为什么。是的,仍然需要 unsafeWindow。
【问题讨论】:
-
这可能是一个愚蠢的问题,但你已经在 jQuery 文档就绪函数中使用了 .unbind() 是吗?
-
@Christian Varga:不,我没有,现在我有了,它可以工作,但仅限于 unsafeWindow。这是为什么?我认为 Greasemonkey 无论如何都会触发“DOM 就绪”? stackoverflow.com/questions/72090/… 或者和“准备好”有什么不同?
-
我的猜测是,greasemonkey 在 DOM 就绪时触发,但仍然在 jQuery 文档就绪之前。因此,在绑定之前调用取消绑定。不过我可能是错的:p
-
您能否将您的解决方案移至一个答案,以便我们将其从未回答列表中删除?谢谢。
标签: javascript jquery greasemonkey