2012-09-01 71 views
3

我有一個包含跨度的div。我有一個mouseup和mousedown事件,應該在按div時觸發。但它不能正常工作。未正確檢測到jQuery mouseup

請去這個小提琴:http://jsfiddle.net/Ym7rM/

如果您選擇的文本,然後嘗試拖動它,它只是檢測到鼠標按下事件,但沒有鼠標鬆開。

我在做什麼錯?我正在使用Chrome。

感謝

編輯:

對不起,我簡單的問題,看到新的小提琴。

+0

爲什麼mouseup事件會觸發,如果鼠標不在鼠標事件附加的元素上方? – j08691

+0

如果是這樣,那麼爲什麼mousedown射擊? – Alvaro

+0

爲什麼mousedown在什麼時候開火? – j08691

回答

6

正在檢測到mouseup事件;只是在執行拖動後,瀏覽器不會觸發mouseup事件。這是瀏覽器的故意行爲。如果您想要包含您現在想要的行爲,您還應該聽取dragend事件。

+0

使用dragend而不是mouseup可以正常工作,有什麼區別? – Alvaro

+3

當你拖動東西時,一些鼠標事件被拖動事件所替代。也就是說,'mousemove'變成'drag','mouseup'變成'dragend'。您會發現從拖動事件傳遞到處理程序的JavaScript事件對象與鼠標事件不同,因爲拖動事件包含一個名爲'dataTransfer'的新對象。 –

+0

感謝這兩方面的解決方案和解釋。我將不得不更深入地觀察拖曳事件。 – Alvaro

-1

mouseup事件只在橙色div內觸發。那就是你編碼的東西。試試這個http://jsfiddle.net/ur8J9/5/

+2

Thanks.Please請參閱編輯的問題。你的小提琴顯示了我的問題:只有mousedown被觸發,而不是mouseup。 – Alvaro