mouseover mouseout冒泡问题求助

书生 2013-02-21 04:50:00
问题描述可能有点长。

JS中动态加载多级菜单(有的分支有5-8级),每次加载选中的菜单的子,给子附上了mouseover mouseout,用来处理鼠标移进和移出时继续加载或者处理隐藏。

发现加载时的处理效果不理想,目前IE不闪烁,但是在菜单上快速移动鼠标,加载和消失处理不过来。
FF中某菜单hover状态时,明显有闪烁。

参考了http://www.cnblogs.com/shaojun/archive/2011/03/16/1986249.html
http://webwork.iteye.com/blog/361360

仍然没有解决。
卡壳了挺长时间了。郁闷。
代码较长,不太好放。
有经验的帮忙分析下问题可能出现在什么地方,多谢!
function showChild(e,obj){
//if (isMouseLeaveOrEnter(evt, obj)){ //这两种判断方法都尝试过
if (checkHover(e,obj)){
//......
//加载子菜单
}
if (window.event){
evt.cancelBubble=true;
}
else {
evt.stopPropagation();
}
stopDefault(e);
}

function HideChild()函数结构差不多。


多谢提供线索和思路。
...全文
227 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
javascript_2011 2013-02-22
  • 打赏
  • 举报
回复
引用 6 楼 lluunn007 的回复:
其实实现了一个直系树状条目,每次是条目点击单线父子遍历后展开来处理的。这样同伴觉得用户在父的同级别之间切换麻烦。每次要返回父的父亲来重寻选择。所以让修改程多级菜单动态加载。
楼主可以仿照window资源管理器的方式弄一个,如果每次都从头开始寻找确实慢 将所有点击的节点转换为全路径的字符串放到数组中,下次从这个数组中遍历
书生 2013-02-22
  • 打赏
  • 举报
回复
楼上的,要考虑兼容多浏览器的。
mycoolaccount 2013-02-21
  • 打赏
  • 举报
回复
改为用mouseenter
书生 2013-02-21
  • 打赏
  • 举报
回复
其实实现了一个直系树状条目,每次是条目点击单线父子遍历后展开来处理的。这样同伴觉得用户在父的同级别之间切换麻烦。每次要返回父的父亲来重寻选择。所以让修改程多级菜单动态加载。
书生 2013-02-21
  • 打赏
  • 举报
回复
我也是觉得菜单级别太深了,个人弄的的,不太有精力来重新划分。爬的别人人的数据。 根据刚才的提示帖子修改,也没有什么效果。 settimeout可以再尝试修改下。等会来说。
ftiger 2013-02-21
  • 打赏
  • 举报
回复
5-8级子菜单的话我认为应当重构整体结构了。超过四级,每级10个操作,就是10000个操作。什么系统要求要这么多操作?
bbjbepzz 2013-02-21
  • 打赏
  • 举报
回复
以前解决IE闪的问题,就是用setTimeout延迟执行的。不然光标在元素边界的时候,IE闪的要死。
JParser 2013-02-21
  • 打赏
  • 举报
回复
是否可以考虑延迟执行,如:你mouseover到一个元素上,定一个时假定300ms后,执行相应的操作。如果在这个300ms内,再次有mouseover触发,就取消前面的定时再设一个新的定时。
001007009 2013-02-21
  • 打赏
  • 举报
回复
先看看 http://bbs.csdn.net/topics/390076874

87,903

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧