2012-05-16 2 views
5

Sto lavorando su binari 3.2 e utilizzando CoffeeScript troppo .. Ho un dubbio nella mobile usando jQuery all'interno della mia applicazione Ho un html comeBinding evento click in 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> 

Nel mio CoffeeScript, Sto cercando di scrivere la funzione al clic di questo follow, sto cercando di inviare una chiamata Ajax.

quando ho scritto come

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

stampe console.log misurano con classe "ui-btn-text", a volte e portata con "ui-btn-interiore", a volte.

Ma nella mia funzione coffeescript, ho bisogno di prendere effettivamente gli attributi da un tag. Come procedere con questo

risposta

10

È possibile utilizzare event.currentTarget invece di event.target:

L'elemento DOM corrente all'interno del fase di bubbling dell'evento.

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

O event.delegateTarget:

L'elemento in cui è stato collegato il momento cd gestore di eventi jQuery.

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

Si potrebbe anche usare closest:

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

Demo:

Il valore event.target è:

Il DOM eleme nt che ha avviato l'evento.

In altre parole, è la cosa su cui è stato effettivamente fatto clic. Il currentTarget e delegateTarget sarà la cosa a cui è legato l'evento. L'utilizzo di closest è probabilmente eccessivo per questo, di solito lo utilizzi per andare su DOM in un contenitore che contiene diversi elementi con cui stai interagendo.

+0

Grazie, e.currentTarget ha funzionato per me. – hallodom

-1

È possibile utilizzare jQuery per ottenere sempre l'elemento di collegamento, quindi si ha un riferimento a cui lavorare se sono necessarie informazioni dagli span contenuti.

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

ah, hai ragione, genitori. Fino a non includere l'elemento abbinato. la cosa più vicina è la funzione giusta da usare. – francpaul