2012-09-10 88 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工具。顯然,疊加層在頁面渲染時執行腳本標記中的代碼,並在疊加層實際應用時再次執行代碼。

相關問題