event.toElement в IE8 и Firefox?

Забелязах, че в Chrome и IE9 за onmouseout събития има свойство event.toElement (така че можете да определите към кой елемент сочи мишката сега).

Не мога да намеря сравним имот във Firefox.

За съжаление не мога да използвам jQuery за обработка на тези събития, трябва да използвам собствен js.

Всеки съвет ще бъде оценен.


person captainclam    schedule 22.12.2011    source източник
comment
Само като странична бележка, в jQuery би било api.jquery.com/event.relatedTarget като във Firefox.   -  person Barney Szabolcs    schedule 27.12.2013
comment
Не съм толкова сигурен в това @BarnabasSzabolcs. тук през 2018 г. e.relatedTarget и $(e).relatedTarget са съответно нула и недефинирани   -  person boatcoder    schedule 22.05.2018


Отговори (6)


Вместо event.toElement трябва да използвате това:

event.target
person Azam Alvi    schedule 04.11.2013
comment
Този отговор е този, който работи за мен. currentTarget и relatedTarget могат да ви дадат различни резултати. напр. в събитие за кликване за ‹a›, когато ‹ul›‹li›‹a›‹/a›‹/i›‹/ul› e.target ми дава ‹a› (точно като e.toElement), но currentTarget и relatedTarget ми дава целия ‹ul›. - person AntonioOtero; 20.05.2014
comment
Точно това ми трябваше. Нов съм в javascript, така че не знам защо дори използвах toElement, вероятно някакъв пример за код, който видях някъде. Целта очевидно е това, което исках на първо място. - person danielson317; 10.11.2014
comment
Това е най-добрият отговор. - person Armeen Harwood; 09.01.2015
comment
Ето добър пример, ако искате да получите и локалното име на Webkit/Chrome gist.github.com/aubreypwd/748ba5958ae3fde694a2 - person aubreypwd; 18.11.2015
comment
Target не е ли елементът, от който мишката е напуснала? toElement ще бъде елементът, до който мишката напуска, така че отговорът ще бъде грешен? - person Alex; 06.07.2016

Във Firefox е event.relatedTarget https://developer.mozilla.org/en/DOM:event.relatedTarget#1003983

person captainclam    schedule 22.12.2011
comment
Тъй като разбрахте, че IE има event.toElement, моля, премахнете препратката му от въпроса и отговора, за да избегнете объркването... това няма да направи невалидни други съществуващи отговори. - person T J; 14.09.2014
comment
FYI – IE11 изглежда няма event.toElement - person Andrew Liu; 19.12.2014
comment
Моля, използвайте отговора на Азам Алви .target е за предпочитане. - person Armeen Harwood; 09.01.2015

Срещнах проблем, когато използвах отговора на Джей, event.target на firefox сочи към родителския елемент на целта на event.toElement в chrome.
След като разгледах obj на събитието, открих event.originalEvent.target, работи добре и на firefox, и на chrome.

person simomo    schedule 07.05.2015

Всъщност event.currentTarget трябва да работи в Chrome, Firefox и IE

person gpasse    schedule 23.10.2013
comment
event.currentTarget ми връща елемента, към който принадлежи събитието, а не елемента, с който се взаимодейства. Можете да използвате балончене на събитие например, за да дефинирате събитие на родителски елемент, така че да не се налага да прикачвате подобни манипулатори на събития към всички дъщерни елементи. - person Lee Kowalkowski; 12.09.2014
comment
да, защо, за бога, FF няма toElement :( - person Nikos; 18.07.2016

От 2014 г. IE11 не поддържа toElement, прегледах обекта на събитието и открих, че target има същите данни като toElement.

Тоест, ако щракнете върху дъщерен елемент вътре в елемент, върху който това събитие е задействано, дъщерният елемент ще бъде „целта“ и ще бъде съхранен в този атрибут.

Елементът, от който е задействано събитието, се съхранява в атрибута currentTarget.

Имайте предвид, че тествах това само за ie 11, така че по-старите версии може да не поддържат това.

Така че, за да поддържаме firefox ie и chrome (и вероятно други, ще е необходим polyfill, нещо като:

var target = e.toElement || e.relatedTarget || e.target || function () { throw "Failed to attach an event target!"; }

Където e е event

person Jay    schedule 30.09.2014
comment
някаква полза от това срещу просто използване на e.target? - person Nikos; 18.07.2016

лесен за следване код..

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
person joseAndresGomezTovar    schedule 14.02.2014
comment
Мисля, че е по-ефективно да се направи evt.toElement = thesupportedFunction само веднъж, след което да се използва evt.toElement - person Thomas Leduc; 29.09.2014