Найти все события blur (), выполненные для любого элемента при загрузке страницы - PullRequest
1 голос
/ 19 января 2012

Я работаю со страницей HTML / jQuery, которую кто-то написал недавно.Для отладки мне нужно найти все .blur() события, которые запускаются для любого элемента при загрузке страницы.

Я могу использовать следующее, чтобы связать событие со всеми элементами:

$("*").each(function() {
     $(this).blur(function() {
         alert(this);
     });
});

Однакоэто не будет работать (даже если бы я мог запустить его до загрузки страницы), так как сценарии на странице все равно перепривязывают .blur() события.

Есть ли способ узнать, какие события .blur ()выполняется при загрузке страницы?Я думал, что смогу перезаписать внутреннюю функцию jQuery .blur() во время выполнения без перезаписи привязок событий размытия, но не уверен, возможно ли это.

1 Ответ

2 голосов
/ 19 января 2012

Свяжите событие blur с document, используя .on('blur', '*', ...) (jQuery 1.7 +):

$(document).on('blur', '*', function(e) {
    e.stopPropagation(); // Otherwise, many alerts will pop up for each event
    alert(this);
});

Если у вас нет jQuery 1.7+, используйте delegate вместо:

$(document).delegate('*', 'blur', function(e) {
    e.stopPropagation(); // Otherwise, many alerts will pop up for each event
    alert(this);
});
...