2012-08-15 39 views
2

所以我有一個<div>元素在我的腳本中創建並附加到另一個<div>。我有:當在拖動過程中釋放鼠標時,Java腳本mouseUp事件被忽略

coverElm.onmousedown = mouseDownEventHandeler; 
document.onmouseup = mouseUpEventHandeler; 
document.onmousemove = mouseMoveEventHandeler; 

我已經定義的功能和巨大的工作和跟蹤鼠標是否打倒一個布爾mouseDown

問題 - 當鼠標被按下並釋放時,document.onmouseup從不處理。我認爲它是因爲它對女巫的任何東西的拖拽都只是幾個字的文字。我有這個問題沒有文字。

所以,我正在尋找的是防止這種奇怪的拖拽行爲方式,或用於方式看onmousedrag如果鼠標被按下的不下來 - 不使用鼠標向上和鼠標按下方法

[編輯]這裏是我的功能:時

function mouseUpEventHandeler(e) { 
     mouseDown = false; 
} 
function mouseDownEventHandeler(e) { 
     mouseDown = true; 
} 
function mouseMoveEventHandeler(e) { 
     if (mouseDown) { 
       coverElm.innerHTML ="<p>Mouse down and dragging</p>"; 
     } 
} 
+0

你絕對確保你mouseUp處理是沒有得到叫什麼名字?我們可以看到你的mouseUpEventHandler代碼嗎?我的懷疑是你的事件處理程序中有一個錯誤導致它默默地失敗,從而給人一種印象,那就是它沒有被首先調用。 – awm 2012-08-15 18:07:57

+0

我剝離了功能,但生病發布我有什麼 – Zac 2012-08-15 18:09:06

回答

2
$j(divID).bind('dragstart', function (event) { event.preventDefault() }); 

感謝所有

1

90%,這是因爲拖動的元素是與mouseup事件偵聽器元件的前面,所以從來下面的父元素獲取事件。

通常,這可以通過使用addEventListener而不是事件的內聯形式來修復。解決這個問題的另一種方法是在鼠標被釋放時爲拖拽元素提供一個eventListener。另外,只要元素開始拖動(通過zIndex屬性),就可以在所有其他元素之前放置一個div

編輯:我颳起了證明的概念一些代碼: http://jsfiddle.net/2BkEM/5/

+0

該div被放置在一個嵌入式視頻,所以我有它的立場:絕對,所以它是在視頻前。在視頻前面,我確定了背景顏色。同樣在拖動你可以看到div拖動。它在被拖動的時候似乎沒有註冊鼠標,並且mouseUp事件被添加到文檔中。你還認爲'addEventListener'值得使用嗎?如果有的話,我應該提及的任何資源?謝謝 – Zac 2012-08-15 18:14:40

+0

這是真的。除非某個元素取消'mouseup'事件,否則文檔元素應該始終看到它。 – awm 2012-08-15 18:17:50

+0

那麼是否有一個簡單的檢查,看看鼠標是否關閉?我找不到任何好方法?我使用jQuery和Ajax,因此如果有幫助,可以輕鬆訪問兩者。 – Zac 2012-08-15 18:20:49

相關問題