Ottieni l’object cliccato che ha triggersto l’evento sfocatura jquery ()

Supponiamo che io faccia questo:

$(target).blur(function(e){ //do stuff }); 

C’è un modo per recuperare l’object su cui è stato fatto clic per triggersre l’azione di sfocatura?

Ho provato a utilizzare e.target , ma sembra che restituisca l’object associato all’azione di sfocatura anziché l’object cliccato.

Se capisco correttamente la tua domanda, questo dovrebbe farlo:

 $(function() { var clicky; $(document).mousedown(function(e) { // The latest element clicked clicky = $(e.target); }); // when 'clicky == null' on blur, we know it was not caused by a click // but maybe by pressing the tab key $(document).mouseup(function(e) { clicky = null; }); $(target).blur(function(e) { console.log(clicky); });​​ }); 

Il trucco è aspettare un segno di spunta in più:

 $(el).blur(function (event) { // If we just hangout an extra tick, we'll find out which element got focus really setTimeout(function(){ document.activeElement; // This is the element that has focus },1); }) 

All’interno di un gestore di eventi, this sarà l’elemento a cui è legato l’evento e e.target sarà l’elemento che ha triggersto l’evento (potrebbe essere o meno lo stesso).

Stai consegnando un evento di blur , non un evento di click . Quindi, all’interno del tuo evento, avrai l’elemento che hai blur . Se vuoi l’elemento click ed hai bisogno di un altro evento per ottenerlo.

blur può essere triggersta da altri eventi, come mettere a fuoco qualcosa; non solo cliccando su qualcosa. Quindi, non c’è modo di ottenere l’elemento che “ha causato la sfocatura”.

Usando questo all’interno della funzione di gestione blur ti darà l’elemento blured .

 $(target).blur(function(e){ var bluredElement = this; // dom element // To make a jQuery object var bluredElement = $(this); }); 

All’interno dell’evento blur non è ansible catturare l’elemento su cui si fa clic. Per ottenere l’elemento click ed hai bisogno di click evento. Per esempio:

 $(element).click(function() { var clickedElement = this; }); 

E per ottenere l’elemento focalizzato puoi usare :focus selettore di :focus come: $(':focus') restituirà l’elemento focalizzato nel documento.