Javascript事件';鼠标器';第一次触发两次-流星
在我的Meteor应用程序中,“mouseenter”事件在我第一次将鼠标放在元素上时被触发两次。在第一次正常工作后 此外,当我启动应用程序而不移动鼠标时,事件处理程序只运行一次 代码如下:Javascript事件';鼠标器';第一次触发两次-流星,javascript,jquery,meteor,Javascript,Jquery,Meteor,在我的Meteor应用程序中,“mouseenter”事件在我第一次将鼠标放在元素上时被触发两次。在第一次正常工作后 此外,当我启动应用程序而不移动鼠标时,事件处理程序只运行一次 代码如下: Template.filters.events({ 'mouseenter .filters-box': (event, element)=>{ var target = Template.instance().$(event.target).children('.filters-popup'
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;
}
});
这是浏览器控制台中的输出:
Navigated to http://localhost:3000/
filters.js:26 enter
filters.js:27 undefined
然后,当我将鼠标移入和移出元素时:
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>
filters.js:26输入
filters.js:27…
filters.js:26输入
filters.js:27…
过滤器。js:44离开
filters.js:45…
过滤器。js:44离开
filters.js:45…
下次我这样做时,每种类型只触发一个事件:
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:26输入
filters.js:27…
过滤器。js:44离开
filters.js:45…
我尝试了event.preventDefault();和event.stopPropagation();方法,但它仍然不能正常工作。您的
是否包含任何子元素?它们也可能触发一个鼠标事件。您可以将event.preventDefault()
放在事件处理程序的开头。这将防止触发任何其他事件处理程序
如果在启动过程中当鼠标在div内时触发该事件,我确实可以想象它会被触发。如果在渲染过程中div的位置/大小发生变化,则即使鼠标位于div结束位置以外的其他位置,也可以获得该div。一个可能的解决方案是只在渲染完成后声明事件处理程序,有点像将东西放入Meteor.startup
调用中。您的
是否包含任何子元素?它们也可能触发一个鼠标事件。您可以将event.preventDefault()
放在事件处理程序的开头。这将防止触发任何其他事件处理程序
如果在启动过程中当鼠标在div内时触发该事件,我确实可以想象它会被触发。如果在渲染过程中div的位置/大小发生变化,则即使鼠标位于div结束位置以外的其他位置,也可以获得该div。一个可能的解决方案是,只在渲染完成后声明事件处理程序,类似于将内容放入
Meteor.startup
调用中。我尝试使用event.preventDefault();和event.stopPropagation();没有结果…我尝试了event.preventDefault();和event.stopPropagation();没有结果…我也有这个问题与流星。即使.preventDefault()对我也没有任何作用。你有没有找到解决这个问题的办法?我也有关于流星的问题。即使.preventDefault()对我也没有任何作用。你有没有找到解决办法?