2013-06-16 1 views
0

Рассмотрим следующий код:Как получить правильный «это» элемент при использовании JQuery на() с двумя селекторами

$('#main').on('click', 'a', function() { 
    console.log($(this)); 
}); 

$(this) всегда будет соответствовать #main элементу, а не к <a> щелкнул. Как я могу получить <a>, который был нажат?

Спасибо!

Edit:

Извините, кажется, вы, ребята правильно: http://jsfiddle.net/R2rJU/1/

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

+1

Нет, 'this' будет установлен, чтобы обратиться к элементу' '' , которая была нажата. Ваша предпосылка неверна. – Pointy

+0

[Здесь jsbin, чтобы продемонстрировать.] (Http://jsbin.com/obulip/1) – Pointy

+0

Возможно, пузырящая проблема imo. – Ohgodwhy

ответ

0

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

1

this относится к обработчику <a>. так что вы делаете правильно

, если вы хотите использовать в явном виде, то вы можете использовать event.targetEvent.Target

$("#main").html("clicked: " + event.target.nodeName); 
+0

Согласно [jQuery .on() документации] (http://api.jquery.com/on/#event-handler), _ "' this' может быть не равно 'event.target', если событие имеет пузырятся из элемента-потомка »_ - означает, что в моем примере, если элемент' 'в элементе' ' щелкнут, то 'this' будет элементом' ', а' event.target' будет ' 'элемент. – Community

-1
$('#main').on('click', 'a', function() { 
    console.log($('#main :selected').text()); 
}); 
+1

Это неверно. –