有一個可通過jQuery UI拖動拖動的大div(地圖)。該div有可點擊的子div。如何避免jQuery UI可拖動也觸發點擊事件
我的問題是,如果你拖動地圖,在鼠標上,點擊事件會觸發你開始拖動的任何子div。
如果拖動它的一部分拖動(相對於某人只需單擊而沒有拖動,在這種情況下需要單擊事件),如何停止觸發單擊事件的鼠標。
有一個可通過jQuery UI拖動拖動的大div(地圖)。該div有可點擊的子div。如何避免jQuery UI可拖動也觸發點擊事件
我的問題是,如果你拖動地圖,在鼠標上,點擊事件會觸發你開始拖動的任何子div。
如果拖動它的一部分拖動(相對於某人只需單擊而沒有拖動,在這種情況下需要單擊事件),如何停止觸發單擊事件的鼠標。
你可能在開始拖動時設置一個變量,例如「justDragged = true」,然後在mouseUp事件中檢查這個變量,如果是true,將其設置爲false,然後執行event.preventDefault + return w/o做任何事情。這樣它就會在拖動之後跳過第一次點擊。似乎有點駭人聽聞,也許其他人會有一個更優雅的解決方案。
我有這個問題,解決的辦法是應用可點擊事件處理程序之前的可拖動事件處理程序。我正在移動一些代碼,並突然出現這個問題。我終於意識到我已經改變了我申請處理程序的順序。當我切換回來時,事情又開始正常工作 - 拖動不會導致點擊。
Arghh,我一直試圖解決這個問題,解決方案爲我工作。但事實並非如此。我在jQuery 1.6.1 – brainjam 2011-06-14 17:57:37
爲我工作!比其他所有的回答都好得多。 – 2013-07-27 23:00:48
其中沒有一個適合我的工作:-( – ProblemsOfSumit 2014-03-19 12:30:33
$('.selector').draggable({
stop: function(event, ui) {
// event.toElement is the element that was responsible
// for triggering this event. The handle, in case of a draggable.
$(event.originalEvent.target).one('click', function(e){ e.stopImmediatePropagation(); });
}
});
這工作,因爲「一聽衆」被解僱以前「正常」聽衆。因此,如果一個聽衆停止傳播,它將永遠不會到達您之前設置的聽衆。
http ://jsfiddle.net/qYz9V/2/這裏是這個答案的小提琴:)謝謝。 – 2013-10-12 22:54:50
小提琴顯示它的工作,但由於某種原因,它不適合我... – WtFudgE 2014-04-30 08:06:24
此解決方案不工作在FF 31,event.toElement未定義。然而,而不是event.toElement使用event.originalEvent.target將在所有瀏覽器中工作 – Attenzione 2015-01-21 14:07:52
我有同樣的問題,並找到了一個簡單的解決方案。在子元素上,在'click'之前定義'draggable',像這樣:'$('element')。draggable({disabled:true});' – cakan 2015-11-20 08:48:03