Supposons que je fasse ceci:
$(target).blur(function(e){
//do stuff
});
Existe-t-il un moyen de récupérer l'objet sur lequel vous avez cliqué afin de déclencher l'action de flou?
J'ai essayé d'utiliser e.target
, mais cela semble renvoyer l'objet attaché à l'action de flou plutôt que l'objet cliqué.
Si je comprends bien votre question, cela devrait le faire:
$(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);
});
});
L'astuce consiste à attendre un tick supplémentaire:
$(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);
})
Dans un gestionnaire d'événements, this
sera l'élément auquel l'événement est lié, et e.target
sera l'élément qui a déclenché l'événement (peut ou non être le même que this
).
Vous distribuez un événement blur
, pas un événement click
. Ainsi, à l'intérieur de votre événement, vous aurez l'élément que vous blur
ed. Si vous voulez l'élément click
ed, vous auriez besoin d'un autre événement pour l'obtenir.
blur
peut être déclenché par d'autres événements, tels que la mise au point de quelque chose; pas seulement en cliquant sur quelque chose. Il n'y a donc aucun moyen d'obtenir l'élément qui "a provoqué le flou".
L'utiliser dans la fonction de gestionnaire blur
vous donnera l'élément blured
.
$(target).blur(function(e){
var bluredElement = this; // dom element
// To make a jQuery object
var bluredElement = $(this);
});
Dans l'événement blur
, vous ne pouvez pas attraper l'élément cliqué. Pour obtenir l'élément click
ed, vous avez besoin de l'événement click
. Par exemple:
$(element).click(function() {
var clickedElement = this;
});
Et pour obtenir l'élément focalisé, vous pouvez utiliser le sélecteur :focus
Comme: $(':focus')
retournera votre élément focalisé dans le document.