JS中的悬停/滑动功能,我做错了吗?

时间:2013-10-13 16:39:21

标签: javascript jquery html css

所以我有一些看起来像这样的javascript:

var headshot = {
  enter: function(e) {
    $(e.target).find('.overlay').slideDown();
  },

  exit: function(e) {
    $(e.target).find('.overlay').slideUp();
  }
}
····
$(function() {
  $('.headshot').hover(headshot.enter, headshot.exit);
});

和一些看起来像这样的html(haml):

.board-row
  .headshot
    .overlay
      blahblah
      %br
      Chief Javascript Architect
  .headshot
    .overlay
      blah
      %br
      Liason
  .headshot
    .overlay
      etc
      %br
      Kati Roll Advocate
  .headshot
    .overlay
      blah
      %br
      Javascript Developer

有一点像这样的CSS:

  .board-container {
    margin-top: 60px;
    padding: 0;
  }
··
  .board-row {
    padding: 0;
    width: 100%;
    height: 200px;
    }

  .headshot {
    display: inline-block;
    margin: 0;
    padding: 0;
    height: 100%;
    width: 24%;
  }

  .overlay {
    width: 24%;
    height: 50%;
    opacity: 0.3;
    background: black;
    position: absolute;
    display: none;
    color: white;
  }

我认为javascript与其他所有内容一起创建了一个漂亮的幻灯片动画,其中不透明的div显示在包含html中文本的爆头上。当我将鼠标悬停在图像上时,确实会发生这种情况(虽然我不确定为什么我需要将叠加上的CSS宽度和高度分别设置为24%和50%,我认为它会占用宽度和高度如果我将它们设置为100%,则为headshot父元素。然而,当我将头像悬停在爆头或不同的爆头上时,尽管我的退出功能,覆盖仍然坚持。是什么赋予了?每隔一段时间就会滑落一次,但这不是规则的例外......

1 个答案:

答案 0 :(得分:0)

在你的退出函数中,e.target有时会使用'overlay'类本身捕获div,所以代码:

$(e.target).find('.overlay')

什么都不返回。

修复退出功能:

exit: function(e) {
    $(e.currentTarget).slideUp();
  }

这是一个很好的解释 - Difference between e.target and e.currentTarget