我做了一個標簽頁面,標簽所在區域的結構是三層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 關注
- 99 瀏覽
添加回答
舉報
0/150
提交
取消