2011-03-23 80 views
3

我有一個div,帶有onMouseUp事件集(HTML)。 在那個div中有很多元素,其中一些元素包含我想要拖動的控制柄的圖標。 圖標有一個onMouseDown事件。爲什麼onMouseUp不能觸發?

當我將鼠標放在圖標上並釋放它時,首先觸發圖標的onMouseDown事件,然後觸發div的onMouseUp事件 - 完全如我所料。

但是,當我點擊圖標時,將其拖動到div的另一部分,然後釋放,mouseDown事件就像您期望的那樣被觸發,並且onmouseUp事件不會被觸發。

我有兩個問題。

1)爲什麼這是行爲?

2)什麼是處理在瀏覽器中獨立的方式拖放的正確方法?

我使用的Firefox 3.6.16的寡婦,但IE 8的工作方式。

+0

這是相當複雜的獨立處理瀏覽器,因爲這個原因大多數人使用[jQuery UI的的可拖動](http://jqueryui.com/demos/draggable/)/ [可棄](http://jqueryui.com/demos/droppable /)框架,或類似的東西。 – Orbling 2011-03-23 16:01:49

回答

0

我知道這似乎不是一個公平的答案,但最好的答案(在我看來)是使用類似jQuery的東西,並使用可拖動。我只使用過Dojo和jQuery,但都有一個易於使用的獨立於瀏覽器的拖放界面。

這是一個解釋jQuery的url。

http://jqueryui.com/demos/draggable/

+0

看起來很好的解決方案。謝謝。可惜的造型不匹配,但我希望我可以解決這個問題。 – Ian 2011-03-23 18:24:04

0

我只是今天這個摔跤。在http://www.brainjar.com/dhtml/drag/demo.html有一個很好的演示,它使用原始Javascript(包含所有瀏覽器檢查)。看起來關鍵是停止mousedown事件上的事件傳播。

我和道場的工作,並使用dojo.stopEvent在在dragstart(即連接到的mousedown功能)改變了我看到鼠標鬆開的差異。