2012-05-16 12 views
5

Pracuję nad szynami 3.2 i stosując coffeescript zbyt .. Mam wątpliwości w jQuery mobile w mojej aplikacji Mam html jakBinding kliknij zdarzenie w jQuery coffeescript

<a href="#" data-item=12 data-status=true class="follow"> 
    <span class="ui-btn-inner"> 
    <span class="ui-btn-text"> 
     Follow 
    </span> 
    </span> 
</a> 

W moim coffeescript, Próbuję napisać funkcję na kliknięcie tego, próbuję wysłać wywołanie ajax.

kiedy pisał jak

$("a.follow").unbind('click').bind 'click', (event, data) -> 
     event.stopPropagation() 
     clickedEl = $(event.target) 
     console.log(clickedEl) 

drukuje console.log obejmują klasie "ui btn tekstu" w czasie i zakresu z "ui btn-wewnętrzne" w czasie.

Ale w mojej funkcji coffeescript muszę pobrać atrybuty ze znacznika. Jak postępować z tym

Odpowiedz

10

event.currentTarget można użyć zamiast event.target:

bieżącego elementu DOM w fazie propagacji zdarzeń.

Demo: http://jsfiddle.net/ambiguous/gdzUC/

Albo event.delegateTarget:

Element gdzie został przydzielony obecnie zwany obsługi zdarzenia jQuery.

Demo: http://jsfiddle.net/ambiguous/UhBWM/

Można też użyć closest:

clickedEl = $(this).closest('a') 

Demo:

Wartość event.target jest:

DOM eleme nt, który zainicjował wydarzenie.

Innymi słowy, to właśnie zostało kliknięte. currentTarget i delegateTarget będą tym, do czego zdarzenie się powiąże. Korzystanie z closest jest prawdopodobnie przesadą, zazwyczaj używa się tego, aby przejść do DOM, do kontenera zawierającego kilka elementów, z którymi wchodzisz w interakcje.

+0

Dzięki, e.currentTarget pracował dla mnie. – hallodom

-1

Możesz użyć jQuery, aby zawsze uzyskać element łącza, musisz mieć referencję do pracy, jeśli potrzebujesz informacji z zawartych rozpiętości.

... 
    clickedEl = $(event.target) 
    parentLink = clickedEl.parentsUntil $("a.follow") 
    console.log(parentLink) 
+0

ah, masz rację, rodzice, dopóki nie zawiera dopasowanego elementu. najbliżej jest odpowiednią funkcją do użycia. – francpaul

Powiązane problemy