[JS 问题]多级菜单,如何获取当前悬停元素的位置?

2014-03-01 17:07:26 +08:00
 kmvan
http://jsfiddle.net/5a2wq/1/

好像是冒泡的原因,二级菜单当前li元素的 offset().left 总是无法正确获取,哪位大侠指点一下?
3707 次点击
所在节点    问与答
9 条回复
jakwings
2014-03-01 17:57:41 +08:00
判断 offset 时用 e.target 。
emric
2014-03-01 17:59:18 +08:00
把` mouseover` 和 `mouseout` 替换成 ` mouseenter` 和 `mouseleave`.
感觉这是一个 XY 问题.
jsonline
2014-03-01 20:24:32 +08:00
@emric 为了解决X,问了一个Y问题?
kmvan
2014-03-01 22:38:01 +08:00
@emric 呃,请问啥是XY问题?
muzuiget
2014-03-01 22:59:14 +08:00
kmvan
2014-03-01 23:37:13 +08:00
@muzuiget 原来如此。3Q
emric
2014-03-01 23:53:54 +08:00
@jsonline @kmvan
对的, mouseover + offset 一般会用的比较少.
猜想在完成这类需求的时候应该还有更好的解决方法.
xiaofu
2014-03-02 00:57:37 +08:00
console.log(jQuery(this).offset());
当鼠标悬停在二级菜单的时候可以看到
Object {top: 74, left: 88}
Object {top: 46, left: 48}
是因为 mouseover 被触发了两次
Each time your mouse enters or leaves a child element, mouseover is triggered, but not mouseenter.
原文 : http://stackoverflow.com/questions/7286532/jquery-mouseenter-vs-mouseover
jQuery('#log').text(); 的值也就被覆盖了,不知道是不是这个原因.
@emric
@kmvan
jsonline
2014-03-02 01:16:30 +08:00
jQuery('#log').text('当前的li offset left 位置可能是:'+ jQuery(e.target).offset().left);

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/102427

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX