Ловля любого щелчка, выполненного с помощью jQuery

новичок способ сделать это, который я предполагаю, было бы

$('*').click(function(){...});

Но есть ли какой-либо способ, которым я могу поймать какой-либо тип щелчка, не имея необходимость регистрировать слушателя для каждого объекта в DOM?


Справка была бы удивительна.=)

26
задан RadiantHex 18 July 2010 в 21:46
поделиться

5 ответов

Как насчет того, чтобы просто прикрепить клик к телу?

$('body').click(function(e){ ... })

В e.target должно содержаться то, на что кликнули

4
ответ дан 28 November 2019 в 06:37
поделиться

$ ('*'). Click (function () {...}) будет перехватывать клики только по элементам, которые существовали, когда вы вызывали .click () . Чтобы улавливать щелчки по элементам, которые могут быть созданы позже, вам нужно будет выполнить привязку к body или документу , как предлагали другие.

4
ответ дан 28 November 2019 в 06:37
поделиться

Как насчет:

$('body').click(function(){...});

Любой щелчок будет на теле, поскольку это родитель всех видимых узлов в домене.

3
ответ дан 28 November 2019 в 06:37
поделиться

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

jQuery заполнит свойство target события , чтобы получить выбранный элемент.

$(document).click(function(event){
  // event.target is the clicked object
});

Обратите внимание, что event.target будет самым глубоким щелчком по элементу. Пример: если в есть , вы получите , а не .

Если вы хотите поймать любой щелчок, но хотите получить определенный элемент (например, класс), вы можете сделать следующее:

$(document).click(function(event){
  $(event.target).closest(".clickable").each(function(){
    // "this" is your "clickable" clicked
  });
});

Если только обработчик событий на элементе по пути не выполняет event.stopPropagation () или вернут false , вы получите щелчок здесь.

19
ответ дан 28 November 2019 в 06:37
поделиться

Событие click по умолчанию всплывает в DOM , поэтому вы можете просто прикрепить обработчик click к корню , например:

$(document).click(function() {
  //do something
});

Если обработчик элемента по пути не event.stopPropagation () или возвращает false , вы получите щелчок здесь.

33
ответ дан 28 November 2019 в 06:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: