Получить любой HTML-элемент нажал на это и JQuery

0

Следующий код показывает текст любого элемента p нажали:

$("p").click(function(){
    console.log($(this).text());
});

Но я хотел бы обобщить это и получить текст любого элемента html, а не только p. Я сделал следующее, но это возвращает текст всех элементов html на странице:

$("*").click(function(){
    console.log($(this).text());
});
Теги:

3 ответа

3
Лучший ответ

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

$("*").click(function(e){
    e.stopPropagation();
    console.log($(this).text());
});

Это, пожалуй, более подходит:

$(document).on('click', '*', function(e){
    e.stopPropagation();
    console.log($(this).text());
});

jsFiddle Demo

  • 0
    Почему второй фрагмент больше подходит?
  • 1
    Потому что таким образом вы фактически присоединяете обработчик событий только к одному элементу (документу), в то время как в первом варианте вы присоединяете обработчики событий ко всем вашим элементам (что может быть очень похоже на упомянутое Дэвидом).
1

Вы нажали на тег body как вы включили *

Пытаться

$("*").click(function(e){
    console.log(e.target.innerHTML);
});

innerHTML

event.target

1

Попробуй это

$('*').on('click', function (e) {
    if (e.target == this) {
        console.log($(this).text());
    }
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню