Jquery在任何和所有自定义事件上触发一个函数

时间:2015-08-14 12:47:00

标签: javascript jquery

我试图弄清楚某些自定义事件何时被触发。这个网站是用jQuery设计的。所以我想为所有自定义 .trigger事件添加一个事件监听器。我试过了:

$('*').on('*', function(e) {
     console.log('custom event name that just triggered:', e.eventName, 'selector of element that it triggered on:', e.target);
});

这没有用。我知道如果我看到所有这些都是糟糕的,那么这就是为什么我不想看标准事件,只看自定义事件。

1 个答案:

答案 0 :(得分:1)

您可以通过这种方式生成添加到网页中的所有活动的列表,但我建议您不要在生产代码中执行此操作。如果您可以完全避免这样做,那就太棒了,但基本上您希望在加载页面上的任何其他JavaScript之前运行以下代码段。

var events = {};
var original = window.addEventListener;

window.addEventListener = function(type, listener, useCapture) {
    events[type] = true;
    return original(type, listener, useCapture);
};

这将为您提供一个对象,其键是您的触发器。

然后,您可以使用这些键生成一个可以传递给jQuery的事件的字符串列表。

var list = Object.keys(events).join(" ");

$('*').on(list, function(e) {
     console.log(
        'custom event name that just triggered:', e.eventName,
        'selector of element that it triggered on:', e.target);
});