JavaScript: захват событий независимо от элемента - PullRequest
0 голосов
/ 27 октября 2011
  1. Существует ли какой-либо существующий механизм, с помощью которого я могу добавить прослушиватель событий в 'focus' для всех элементов DOM на странице, которые имеют это событие?Если нет, как я могу это сделать?

  2. Я бы хотел console.log (что-то) каждый раз, когда любой элемент DOM запускает событие.Как я могу это сделать?

РЕДАКТИРОВАТЬ: без каких-либо рамок, пожалуйста:)

Ответы [ 4 ]

1 голос
/ 27 октября 2011

Вы можете привязать событие к элементу body или html. Или любой другой элемент, который включает в себя все ваши HTML.

Или, если вы хотите использовать jQuery, вы можете сделать что-то вроде

$("*").bind("focus", function(e){
    console.log("something");
})
0 голосов
/ 27 октября 2011

Примерно так должно работать (с jQuery).

$("input").focus(function(){
   console.log($(this).attr("id"));
});

Вот живой пример: http://jsbin.com/ipiciz/edit#javascript,html,live

0 голосов
/ 27 октября 2011

Вы можете попробовать использовать псевдоселектор :input в jQuery.

$(':input').focus(function(e){
    console.log(e);
});

Он будет прикреплен только к элементам ввода, что, вероятно, в любом случае вам и нужно.

0 голосов
/ 27 октября 2011

События «всплывают» через DOM, поэтому вы должны иметь возможность привязать слушателя к документу, телу, HTML или любому другому родительскому элементу (например, div) и прослушивать каждое событие, инициируемое содержащимися в нем элементами.

Например, используя JQuery, вы можете сделать это следующим образом:

$(document).bind('focus', function(e) { console.log(e); });

Это будет регистрировать каждое событие фокуса, независимо от того, какой элемент изначально инициирует событие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...