In meiner Meteor-Anwendung wird das Ereignis 'mouseenter' zweimal ausgelöst, wenn ich meine Maus zum ersten Mal auf das Element setze. Nach dem ersten Mal funktioniert es richtig.Javascript-Ereignis 'mouseenter' zweimal zum ersten Mal ausgelöst - Meteor
Der Ereignishandler wird auch einmal ausgeführt, wenn ich die Anwendung starte, ohne die Maus zu bewegen. Hier
ist der Code:
Template.filters.events({
'mouseenter .filters-box': (event, element)=>{
var target = Template.instance().$(event.target).children('.filters-popup')[0]
console.log('enter');
console.log(target);
if(!target){
return;
}
var prevWidth = target.style.width;
target.style.width = 'auto';
var endWidth = getComputedStyle(target).width;
target.style.width = prevWidth;
target.offsetHeight;
target.style.width = endWidth;
},
'mouseleave .filters-box': (event, element)=>{
var target = Template.instance().$(event.target).children('.filters-popup')[0];
console.log('leave');
console.log(target);
if(!target){
return;
}
target.style.width = getComputedStyle(target).width;
target.offsetHeight;
target.style.width = 0;
}
});
Dies ist die Ausgabe im Browser-Konsole:
Navigated to http://localhost:3000/
filters.js:26 enter
filters.js:27 undefined
Dann, wenn ich die Maus in das und aus dem Element bewegen:
filters.js:26 enter
filters.js:27 <div class="filters-popup" style="width: 0px;">…</div>
filters.js:26 enter
filters.js:27 <div class="filters-popup" style="width: 0px;">…</div>
filters.js:44 leave
filters.js:45 <div class="filters-popup" style="width: 0px;">…</div>
filters.js:44 leave
filters.js:45 <div class="filters-popup" style="width: 0px;">…</div>
Das nächste Mal, wenn ich es tue, wird nur ein Ereignis von jedem Typ ausgelöst:
filters.js:26 enter
filters.js:27 <div class="filters-popup" style="width: 0px;">…</div>
filters.js:44 leave
filters.js:45 <div class="filters-popup" style="width: 0px;">…</div>
Ich versuchte mit event.preventDefault(); und event.stopPropagation(); Methoden, aber es hat immer noch nicht richtig funktioniert.
Ich habe dieses Problem auch mit Meteor. even.preventDefault() tut auch nichts für mich. Haben Sie jemals eine Lösung gefunden? –