2013-08-18 52 views
2

我知道有一些手動的方式,我已經谷歌搜索,但沒有找到自動化的方法。是否有可能檢測哪一行或哪個函數觸發了元素上的jQuery更改事件?

我有一些相當複雜的代碼,其中一個元素可以由幾個不同的方式由jQuery在changed,由於不同的原因在執行整個代碼的過程中取決於各種不同的事情。

我試圖找到一個問題,它不正確地更改,並且在確定哪個change()事件正在發生更改時不應該發生更改。

反正是有,我可以暫時添加類似:

$(document).on('change', '.myClass', function (e){ 
    console.log(e.functionOrLineWhichTriggerThis); 
}); 

對於調試/故障查找目的?

回答

0

你可以嘗試創建一個錯誤並打印其堆棧跟蹤的老把戲:

$(document).on('change', '.myClass', function (e){ 
    var error = new Error(); 
    console.log(error.stack); 
}); 

堆棧屬性不是標準,但似乎是主流瀏覽器的支持。你可以得到更多關於它的信息在這裏:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/Stack

+0

他需要知道哪個函數被觸發,而不是異常 –

+0

Nope,工作原理,'stack trace'追溯到調用產生錯誤的函數的函數,所以讓我回頭看看這個問題。優秀的電話,謝謝@jjsanchez –

0

你可以在你想要跟蹤的每個函數裏面定義變量,然後你可以讓函數在變量被觸發時設置變量。那麼你可以在瀏覽器的控制檯中檢查變量的值,並找出使用哪個函數。

+0

好像很多工作,雖然,我希望,jQuery的可能與'event'對象或東西做到這一點的內在能力。我找不到任何東西。 –

+0

我已經在我的項目中使用了上面提到的方式,它非常完美。 –

相關問題