我做了一个标签页面,标签所在区域的结构是三层div,最下层表示标签栏,中间是标签滚动区域,最上层是一个一个的标签(仿照Ext的tabpanel)。 当拖动某个标签时,我做的处理是,监听标签上的鼠标按下动作,然后复制并隐藏此标签,将此标签的副本的position属性设为absolute,并作为滚动区域的第一个节点,然后监听标签栏上的鼠标移动事件及鼠标抬起事件,鼠标移动时此标签的副本会跟着鼠标移动,抬起时,根据位置更改标签的位置。 这个操作在google浏览器中可以正确实现,但在ie下(我用的ie8),拖拽时鼠标会变为禁止样式,副本不会跟着鼠标移动,鼠标抬起后,副本才会跟着移动,鼠标再做一次点击动作,标签才会移动到正确位置。
1 回答
斯蒂芬大帝
TA贡献1827条经验 获得超8个赞
mousemove 和 mouseup 要绑定到 document 上,还有就是坑爹的 ie 当拖拽到窗口外的时候 mouseup 事件会丢失,因此要在 mousemove 中做针对IE的 hack 检测并自己触发 mouseup。比如在 jqueryui 的 drag & drop 中的 mousemove 的处理方法
Javascript代码
_mouseMove: function(event) {
// IE mouseup check - mouseup happened when mouse was out of window
if ($.browser.msie && !(document.documentMode >= 9) && !event.button) {
return this._mouseUp(event);
}
// other mouse move process code ....
},
- 1 回答
- 0 关注
- 76 浏览
添加回答
举报
0/150
提交
取消