为什么我的JavaScript onmouseover事件不火

Why does my JavaScript onmouseover event not fire?

本文关键字:事件 onmouseover 我的 JavaScript 为什么      更新时间:2023-09-26

在我的Meteor应用程序中,我想响应图像的onmouseover事件,并在鼠标位于图像上方时"弹出"图像(如"放大")。我有这样的代码:

HTML:

<template name="postTravelSection1">
  <div class="hide" id="postTSec1" name="postTSec1">
    <h2>Post-Travel Top</h2>
    <img id="imgPostTravelTop" name="imgPostTravelTop" src="images/1_PTE_Top_Jig.png" alt="post Travel image" height="280" width="350">
  </div>
</template>
CSS:

.popout_image{
    width: 400px;
    height: 320px;
}
.shadow {
    -moz-box-shadow: 3px 3px 4px #000;
    -webkit-box-shadow: 3px 3px 4px #000;
    box-shadow: 3px 3px 4px #000;
}
JavaScript:

Template.postTravelSection1.events({
  // 'onmouseover #imgPostTravelTop': function() {
  'click #imgPostTravelTop': function() {
    $('#imgPostTravelTop').addClass('popout_image');
    $('#imgPostTravelTop').addClass('shadow');
    $('#imgPostTravelTopRight').removeClass('popout_image');
    $('#imgPostTravelTopRight').removeClass('shadow');
    $('#imgPostTravelTopCenter').removeClass('popout_image');
    $('#imgPostTravelTopCenter').removeClass('shadow');
    $('#imgPostTravelTopBottom').removeClass('popout_image');
    $('#imgPostTravelTopBottom').removeClass('shadow');
  }
});

click事件工作正常,但onmouseover(当我尝试使用它而不是click时)不会触发。那么,如何才能获得对图像上的hoverentermouseover事件的响应呢?

您正在寻找的事件是mouseentermouseleave。可用的事件在Meteor网站上没有很好的记录,但是你可以在Github上看到它们的列表。

Template.postTravelSection1.events({
  'mouseenter #imgPostTravelTop': function() {
    //enlarge the image
  },
  'mouseleave #imgPostTravelTop': function() {
    //shrink the image
  }
});

Brian的回答一针见血。下面是工作原理(只需要更改JavaScript):

Template.postTravelSection1.events({
  'mouseenter #imgPostTravelTop': function() {
    $('#imgPostTravelTop').addClass('popout_image');
    $('#imgPostTravelTop').addClass('shadow');
  },
  'mouseleave #imgPostTravelTop': function() {
    $('#imgPostTravelTop').removeClass('popout_image');
    $('#imgPostTravelTop').removeClass('shadow');
  }
});
Template.postTravelSection2.events({
  'mouseenter #imgPostTravelTopRight': function() {
   . . .