2013-09-04 12 views
5

Sto utilizzando la funzione jQuery on di legare evento click:Come ottenere il selettore su cui è stato associato l'evento "clic"?

$('#page-container, .some-class').on('click', '.do-something', function(event) { 
    // #page-container or .some-class? 
}); 

Ora all'interno funzione di callback voglio sapere se l'evento 'click' è stato licenziato dal #page-container o .some-class. Con $(this) ottengo solo il selettore su cui è stato fatto clic.

risposta

8

delagateTarget dell'oggetto event si riferisce al target di delega:

$('#page-container, .some-class').on('click', '.do-something', function(event) { 
    var dt = event.delegateTarget; 
}); 

http://jsfiddle.net/SmXCG/

+1

Questo è esattamente ciò che volevo, semplice e senza ricerca DOM aggiuntiva. Brillante. – zelazowy

2

provare qualcosa di simile

$('#page-container, .some-class').on('click', '.do-something', function(event) { 
     $(this).attr('id'); // #page-container 

     $(this).hasClass('.some-class'); //Will return true if it has some-class 
    }); 
+1

'this' si riferisce a' .DO-qualcosa 'elemento. – undefined

+0

sì, @undefined ha ragione – zelazowy

+0

sì, @ undefined è giusto –

0

Prova

$('#page-container, .some-class').on('click', '.do-something', function(event) { 
    var isSomeClass = $(this).closest('.some-class').length > 0 
}); 

Demo: Fiddle

2

si può fare qualcosa di simile:

$('#page-container, .some-class').on('click', '.do-something', function (event) { 
    if ($(this).closest('#page-container').length) 
     alert('Its #page-container'); 
    else if ($(this).closest('.some-class').length) 
     alert('Its .some-class'); 
}); 
+0

Funziona, ma richiede una ricerca DOM aggiuntiva. – zelazowy

0

lavoro DEMO

provare questa proprietà

$('#page-container, .some-class').on('click', function(event) { 
alert($(this).text()); 
}); 
Problemi correlati