2010-02-25 13 views
7

Powiel możliwe:
Can jQuery provide the tag name?

Cześć!

To pytanie jest na tyle proste, że wstydzę się, ale próbowałem znaleźć odpowiedź przez 30 minut bez żadnych rezultatów.

Jak mogę się dowiedzieć, jaki element został kliknięty w poniższym kodzie.

$('*').click(function (event) { 
var this_element = $(this).???; 
return false; 
}) 

Co szukam ma mieć this_element zmienną ustawiony na 'a', czy jest to związek, 'p', jeśli jest to paragraf 'div', jeśli ...

Dzięki!

+0

Patrz: http://stackoverflow.com/questions/341900/how-can-i-determine-the-element-type-of-a-matched-element-in-jquery i http://stackoverflow.com/questions/1532331/can-jquery-provide-the-tag-name i http://stackoverflow.com/questions/1864151/how-to-know-the-type-of-an-jquery- obiekt ... – Shog9

+0

nawiasem mówiąc, powinien zawierać 'event.stopPropagation();' aby powstrzymać twoje kliknięcie od przekazania do elementów macierzystych bez ważnego powodu. zobacz api docs: http://api.jquery.com/get/ – ghoppe

+0

@ghoppe - "return false;" w zdarzeniu jQuery obsługuje '.stopPropagation()' oraz '.preventDefault()' – gnarf

Odpowiedz

8

Spróbuj tego:

$('*').click(function (event) { 
    var this_element = this.tagName.toLowerCase(); 
    return false; 
}); 

Wskaźnik this odnosi się do rzeczywistego elementu jest rozpatrzony. W ramach rdzenia DOM Level 2 wszystkie elementy DOM mają właściwość o nazwie .tagName.

+0

Upewnij się, że '.toLowerCase()' niektóre przeglądarki implementują wszystkie znaki dla '.tagName', podczas gdy inne nie. – gnarf

+0

To naprawdę zależy od tego, co robisz z nazwą tagu. To może nie mieć znaczenia. Ale wystarczy, dokonam zmiany. – Xavi

3
$(this).get(0).tagName; 
+0

um, -1 za co? działa: http://jsbin.com/akohe/edit – ghoppe

+4

donno, ale jest nieco zbędny - '$ (this) .get (0)' powinno zawsze być równe 'this'. – Shog9

+1

prawdziwe tylko w tym konkretnym przypadku (kliknięcie elementu). $ (this) może zawierać więcej niż jeden element DOM ... – ghoppe

Powiązane problemy