Горячий, чтобы получить элемент DOM или jQuery с помощью мыши? - PullRequest
2 голосов
/ 30 марта 2011

Как получить элемент DOM или jQuery щелчком мыши? Например, у меня есть следующий код:

$("*").mouseup(
 function() 
 {
    var clickedElement = ???????????????
 }
);

Итак, как инициализировать переменную clickedElement? Спасибо.

Ответы [ 3 ]

8 голосов
/ 30 марта 2011

Внутри обработчика событий this относится к элементу DOM, для которого было инициировано событие.

$("*").mouseup(function() {
    var clickedElement = this;
});

Чтобы получить элемент jQuery, просто передайте this в jQuery.

Но : было бы намного лучше использовать делегирование события вместо привязки обработчика события к каждому элементу, Вы можете получить источник события с помощью event.target:

$(document).mouseup(function(event) {
    var clickedElement = event.target;
});

И еще одно примечание: Это не обязательно даст вам элемент, по которому щелкнули, но элемент, над которым была отпущена кнопка мыши, который может отличаться от элемента, на котором была нажата кнопка. Возможно, вы захотите привязаться к событию click.


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

4 голосов
/ 30 марта 2011

Если вы не хотите прикреплять событие к каждому элементу DOM (что я бы не рекомендовал) ...

$(document).mouseup(function(event) {
   var clickedElement = event.target;
});

jsFiddle .

Здесь любое событие элемента будет пузыриться вплоть до document, где оно будет обработано, а исходный элемент, который запустил событие, будет в event.target.

2 голосов
/ 30 марта 2011

Используйте это .т.е.:

$("*").mouseup(  function()   {     
    var clickedElement = this; //HTML DOM Element
    var $clickedElement = $(this); //jQuery Wrapped HTML DOM Element
} ); 
...