【问题标题】:Prevent function from executing or removing anonymous event listeners阻止函数执行或删除匿名事件侦听器
【发布时间】:2014-04-04 05:44:32
【问题描述】:

我正在为一个没有开放 API 的网站创建一个 Chrome 扩展程序,所以我很长一段时间都在阅读Closure Compiled spaghetti 代码。我已经取得了很大的进步,但我似乎被困住了。在页面的 onload 上,这个函数执行:

function comments_initReply(){
    var b=$("#ajax_comm div.com");
    for(var a=0;a<b.length;a++){var d=$(b[a]);
    var c=d.find(".commentReplyLink");
    if(c.length){
        d.on("dblclick",function(){$(this).closest("div.com").find(".commentReplyLink").click()}).find(".t")}
    }
} 

它的作用是在网站上添加一个评论 div,并将其变成一个大的可双击区域,供您打开回复。我要做的就是删除双击属性,这样您就可以双击文本并突出显示它,而不是打开回复模式对话框。

由于该函数是匿名的,它不能使用removeEventListener 来分离它。有任何想法吗?我宁愿不使用 jQuery。

【问题讨论】:

  • 看起来该事件处理程序是通过 jQuery 附加的。用 jQuery 删除它可能也是最简单的...
  • "我不喜欢使用 jQuery。" - 为什么?
  • 如果 jQuery 只是 Javascript,我宁愿从库中写出一个完整的函数,而不是包含整个库,我不会发现自己使用它。
  • jQuery 库已经包含在您的项目中,因为您发布的这个函数是基于 jQuery 的。
  • 项目中没有,正好和站点中的jQuery交互,因为要直接修改页面的JS,必须通过内容脚本注入自己的JS。跨度>

标签: javascript google-chrome google-chrome-extension dom-events onload


【解决方案1】:

好吧,虽然你不喜欢使用 jQuery,但它更容易使用,而且我的解决方案将基于 jQuery,如果你愿意,可以随意将其转换为普通的 Javascript。

function comments_endReply() {
    $("#ajax_comm div.com").off("dblclick");
}

【讨论】:

  • 感谢您的回复。它确实有效。我想我可能只是使用它,我似乎对 jQuery 有一些非理性的恐惧。
  • 我不确定恐惧是否完全不合理。但最后,如果你想让别人收拾烂摊子,谁比当初弄得烂摊子的人更好?
猜你喜欢
  • 2011-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-23
相关资源
最近更新 更多