2011-05-05 16 views
5

Necesito recuperar el elemento DOM que causa un evento de enfoque (desenfoque) desde DENTRO del evento de desenfoque. El siguiente código me dará la ID del elemento que perdió el foco, NO el elemento que causó que el elemento pierda el foco. Es ese segundo elemento que necesito.Determinar el último elemento al que se hizo clic

.live('blur', function(e) { 
    var id = $(this).attr('id'); 
} 

¿Cómo consigo el elemento que causó la falta de definición, no el elemento de la falta de definición se une a? La única forma en que puedo pensar es capturar el evento window.click y luego manejar la lógica que necesito allí, pero eso será complicado, así que espero que haya una forma de obtener el elemento DOM desde el evento blur.

+2

http://stackoverflow.com/questions/121499/when-onblur-occurs-how-can-i-find-out-which-element-focus-went-to –

+0

¿Puede darnos más información sobre lo que están tratando de lograr una vez que tienes el elemento que causó el desenfoque? Puede haber otras formas de resolver el problema –

+0

Necesito asegurar que ciertas acciones ocurran en base a lo que se hizo clic o no, es decir: ciertos elementos deben mostrarse u ocultarse. El problema es que este código es un código heredado del que no me gusta meterme. Puedo resolver esto manejando el clic de la ventana y colocando toda mi lógica allí, pero eso requeriría destruir completamente el resto de la base de código que desesperadamente quiero evitar. A menos que haya alguna forma de obtener de manera confiable el elemento desencadenante desde el propio evento desenfocado, entonces no tendré otra opción. – AlexGad

Respuesta

4

Ejecutar este

$(document).click(function(e) { 
    e = e || event; 
    $.lastClicked = e.target || e.srcElement; 
}); 

entonces se puede obtener en cualquier lugar por

var lastClickedElement = $.lastClicked; 
// ... 
+1

El problema es que no hay garantía de cuándo se activan los eventos, aunque podría estar equivocado. ¿No habría una pequeña posibilidad de que si traté de obtener el valor establecido en el documento, haga clic dentro del evento de desenfoque, que aún no se haya completado? – AlexGad

16

Con esta:

$(document).click(function(event) { 
    window.lastElementClicked = event.target; 
}); 

Saludos

+1

Lo siento, quise agregar que necesito que el elemento se recupere de manera confiable desde el controlador de desenfoque. Si configuro lo anterior, y luego trato de usar el código: alert ($ (window.lastElementClicked) .attr ("id")); desde dentro del evento de desenfoque, obtengo el ID del elemento al que está asociado el desenfoque. – AlexGad

1
$(document).click(function(event) { 
    var selected_name = event.target.name; 
    var selected_id = event.target.id; 
    var selected_value = event.target.value; 
    // etc. 
}); 

Solo construyendo y aclarando en los mensajes de otros.

Cuestiones relacionadas