есть пункт меню, который отображает модальный div. хотите, чтобы созданный div автоматически закрывался всякий раз, когда пользователь перемещает свой курсор из , но когда первоначально создается модальный div, курсор выходит из него , поэтому сначала курсор должен двигаться внутри него.
когда я захожу на консоль, запускается триггер onmouseout
, где и e.target
, и e.currentTarget
- это сам div, событие запускается дважды , сначала при вводе div и затем оставляя div.
Во-первых, это не имеет смысла для меня - почему это происходит? во-вторых, есть ли здесь стандартная логика?
<час />
все HTML генерируется
Вот некоторый код, который создает модальный и прикрепляет триггер mouseout
// code creates the modal div from the menu
get: function( e ) {
util.popup( E.h4( "Maintenance Menu:" ),
E.ul( E.a( '#', maintenance.users, 'Users (Logins)' ),
E.a( '#', maintenance.employees, 'Employees' ),
E.a( '#', maintenance.skills, 'Skill Types' ),
E.a( '#', maintenance.etps, 'Expense Types' ),
E.a( '#', maintenance.menus, 'Menu Items' ) ),
E.div( E.button( maintenance.done, "s.width:90%", "Finished" ) ) );
util.popup_dom().addEventListener( 'mouseout',util.popout() );
},
popup()
создает модал и помещает его в тело, popout()
удаляет его.
<ч />
решение (согласно первому ответу - спасибо!) С помощью mouseover
для установки mouseout
:
:
util.popup(...);
var outSet = false; // whether mouseout trigger has been set
util.popup_dom().addEventListener( 'mouseover',function(e) {
if( !outSet ) {
setTimeout( function() {
util.popup_dom().addEventListener('mouseout',function(e){util.popout();} ),
200 );
outSet = true;
}
} );