2012-09-10 58 views
1

出于某种原因,我在数字输入上有一个额外的更改处理程序。我不能为了我的生活找出它来自哪里。任何人都可以指示我如何追踪这个胭脂事件处理程序的分配方向吗?在chrome开发工具中,如果我检查元素并查看事件处理程序区域,它只会指向(1)jquery和(2)undefined。如何找到jquery事件处理程序分配的位置?

+0

你可以发布代码吗? – Blender

+0

我使用标准的$(“#id”)。bind(“change”,handler)调用。但即使我注释掉了我试图使用的处理程序,上面的处理程序仍然存在。我甚至尝试过打电话给解绑。没有骰子。我只是不确定是否有方法来跟踪调用堆栈,或者导致我将其添加到分配的位置。 – devlife

+0

未定义通常意味着它是内嵌JavaScript,而不是外部文件。 – valentinas

回答

1

如果其他处理程序是不需要的,你可以随时使用unbind

$("#id").unbind('change').bind("change", handler); 

当然,你必须考虑到consideratin每一种可能的情况下,这样一个完整的solutin会:

$("#id") 
    .off('change') 
    .die('change') 
    .unbind('change') 
    .on("change", handler); 
1

所有绑定jQuery的事件都在$(target).data('events'); 表示具有作为事件名称的键的对象包含函数数组。

例如直接在控制台上直接使用stackoverflow: $('a').data('events').click[0].handler;

要列出每个由jQuery对象尝试分配的事件类型calbacks的:

$.each($(youSelector).data('events'), function(v,k){ 
    console.log(v +":"); 
    $(this).each(function(){ 
    console.log(this.handler); 
    }); 
    console.log("------------------"); 
}); 

办法,找出从哪个文件他们来是从资源选项卡控制台一段处理代码上搜索输入搜索:)

0

这些答案不是我正在寻找的,但我能够找出处理程序来自哪里。我使用的是webshim和一个名为overlay的jquery工具。显然,叠加层在页面渲染时执行脚本标记中的代码,并在叠加层实际应用时再次执行代码。

相关问题