J'ai remarqué que dans Chrome et IE9, pour les événements onmouseout, il y a une propriété event.toElement (afin que vous puissiez déterminer quel élément la souris pointe maintenant)).
Je ne trouve pas de propriété comparable dans Firefox.
Malheureusement, je ne peux pas utiliser jQuery pour gérer ces événements, je dois utiliser des js natifs.
Tout avis sera le bienvenu.
Utilisez-le pour résoudre mon problème
event.target
Dans Firefox, c'est event.relatedTarget
https://developer.mozilla.org/en/DOM:event.relatedTarget#100398
J'ai rencontré un problème lorsque j'utilise la réponse de Jay, event.target
sur firefox pointe vers l'élément parent de event.toElement
cible sur chrome.
Après avoir examiné l'événement obj, je trouve event.originalEvent.target
, cela fonctionne bien sur firefox et chrome.
Réellement event.currentTarget
devrait fonctionner dans Chrome, Firefox et IE
Depuis 2014, IE11 ne prend pas en charge toElement
, j'ai parcouru l'objet événement et j'ai trouvé que target
avait les mêmes données que toElement.
Autrement dit, si vous cliquez sur un élément enfant à l'intérieur d'un élément sur lequel cet événement s'est déclenché, l'élément enfant sera la "cible" et stocké dans cet attribut.
L'élément à partir duquel l'événement déclenché est stocké dans l'attribut currentTarget
.
Remarque, je n'ai testé cela que pour 11, donc les anciennes versions peuvent ne pas le supporter.
Donc, pour supporter Firefox ie et chrome (et peut-être d'autres, un polyfill serait nécessaire, quelque chose comme:
var target = e.toElement || e.relatedTarget || e.target || function () { throw "Failed to attach an event target!"; }
Où e
est le event
code facile à suivre ..
enter code here
if(typeof evt.toElement !== "undefined")
{
evt.toElement.classList.toggle('done');
}
else if(typeof evt.relatedTarget !== "undefined")
{
if(evt.relatedTarget !== null)
{
evt.relatedTarget.classList.toggle('done');
}
else if(typeof evt.currentTarget !== "undefined")
{
evt.currentTarget.classList.toggle('done');
}
else
{
console.log("s_f_li_clickexception...");
} //endif
} //endif