是否可以检测哪个行或函数触发了元素上的jquery更改事件?

时间:2013-08-18 10:32:58

标签: javascript jquery debugging onchange

我知道有一些手动方式,我有谷歌搜索,但没有找到自动方式。

我有一些相当复杂的代码,其中一个元素可以通过几种不同的方式由jQuery changed,在执行整个代码期间的不同时间由于不同的原因,取决于各种各样的事情。

我正在尝试找到一个问题,因为它发生了错误的更改,并且无法确切地确定哪个change()事件正在发生变化。

无论如何,我可以暂时添加以下内容:

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

用于调试/故障查找目的?

2 个答案:

答案 0 :(得分:0)

您可以在每个要跟踪的函数内部定义变量,然后您可以在触发时使函数设置变量。然后你可以在浏览器的控制台中检查变量的值,并找出使用的函数。

答案 1 :(得分:0)

您可以尝试创建错误并打印其堆栈跟踪的旧技巧:

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

stack属性不是标准的,但主要浏览器似乎支持。您可以在此处获得有关它的更多信息:

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