这是一个简单的jsFiddle:
我有一个span
我绑定的元素mouseover
。当我在不同的文本行上水平移动鼠标时,鼠标悬停只发生一次。但是,当我在同一个 span 元素内的文本行之间移动时,鼠标悬停会发生多次。
- 这是预期的吗?
- 是否有防止这种情况的标准方法(缺少添加逻辑来考虑最后访问的元素)?
使用 Chromium,版本 28.0.1500.71 Ubuntu 13.04 (28.0.1500.71-0ubuntu1.13.04.1)。
这是一个简单的jsFiddle:
我有一个span
我绑定的元素mouseover
。当我在不同的文本行上水平移动鼠标时,鼠标悬停只发生一次。但是,当我在同一个 span 元素内的文本行之间移动时,鼠标悬停会发生多次。
使用 Chromium,版本 28.0.1500.71 Ubuntu 13.04 (28.0.1500.71-0ubuntu1.13.04.1)。
这似乎源于<span>
具有多行文本的内联元素。实际上,就鼠标而言,每行之间的空间不包含在元素中。
这可以通过在元素上放置背景颜色来看到。将其更改为 css 中的 block 元素可以display:block
缓解问题,或者使用 span 以外的其他本机块元素
如果您将其设为 div 而不是跨度,它将按预期工作
这是 a 的奇怪用法span
。由于语义元素是一个<p>
标签,所以使用它。这也将纠正您的问题。
有趣的是,这是因为 span 是一个内联元素并且它是包装的。因为 span 是一个内联项,并且它是换行的,所以你会得到单独的行,并且行之间有空格。我以前从未接受过这个,但是,因为你有一个 mouseout 事件,它使它更明显。为了证明这一点,请在您的小提琴上查看此更新。
小提琴:http: //jsfiddle.net/LSRvn/
The reason a DIV doesn't do this is because the DIV is a block element containing the items.