2012-06-24 27 views
2

我在Meteor有一個單頁的應用程序。Mousedown和mousemove在Meteor中表現不一致

我想跟蹤一下書籤列(以包含圖片的<a>標記的形式)是否已被拖拽到書籤欄。

我正在使用mousedown,mousemove和mouseup的組合來嘗試跟蹤拖動。

Template.myTemplate.events = { 
    'mousedown': function(){  
    Session.set('dragging', true) 
    console.log('drag starts') 
    }, 
    'mouseup': function(){ 
    if (Session.get('dragging') == true && event.y < 10){ 
     // The result i want 
    } 
    Session.set('dragging', false) 
    console.log('drag stops') 
    } 
} 

拖動開始還不錯,但在鼠標離開<a>標籤後不久,它只是似乎卻步,而mouseup沒有註冊,因爲它應該。

邏輯的工作原理如果我return falsemouseupmousedown後 - 即。我可以在mousedown之後將鼠標移動到很遠的地方,然後觀察event.y是否爲< 10,並且沒有任何阻礙,但是代碼沒有用戶能夠拖動<a>標籤的預期效果。

你有什麼想法嗎?

回答

0
'mousedown': function(){ 

您在模板上做了mousedown,它應該在a元素上。

那麼,這樣做,而不是:

'mousedown a': function(){ 

或者這裏選好a元素。

+0

我試過了。不幸的是,沒有運氣。 Mousedown總是有效的。這是mouseup,這是問題。它似乎是非常隨機的,不管它是否發生火災。 。在一個非流星設置,這樣的:'$( '#拖動')上( '拖拽',功能(事件){ \t \t \t的console.log(window.event.clientY); \t \t})'工作正常。 – jonnyrichards

+0

在我的實驗中,mouseup似乎只在沒有拖動鼠標時才起作用。如果被拖拽,只能被摧毀。 –

+0

值得注意的是,對於任何人來說,這不是一個流星問題,而是一個普通的javascript問題 - 如果鼠標離開mousedown事件的元素,mouseup事件不會被解僱......有一個通用模板級別(甚至是body) mouseup事件見[這個問題](http://stackoverflow.com/questions/6019190/mouseup-event-on-drag) – garrilla

相關問題