2012-06-17 21 views
3

如何在使用JQuery進行鼠標懸停之前追蹤鼠標移動?即使鼠標移出目標元素,單擊某個目標元素時也應該開始跟蹤,並繼續進行鼠標懸停。使用JQuery點擊鼠標時的動作

<div id="some_elt"> 
    <div id="target"> 
    </div> 
</div> 

我能想到的是結合mousemove整個文檔以及基於全局標誌,我從$("target").mousedown和取消設置從$("target").mouseup調用我的議案的處理程序的唯一方法。

有沒有比這更優雅的方法?

編輯:我想我需要補充一點......我的目標已經有draggable()應用於它。我正在努力製作一個體面的圖像瀏覽器。我有一個包含可拖動的img的視口div。我試圖通過像shift +中鍵這樣的東西來使圖像變得可縮放,而不會干擾用於導航的可拖動。我將不得不搭載JQuery在底層做的事情來做可拖動的工作?

編輯2:要回答我的編輯:當然不是! JQuery真棒!

+0

這是常用的方法... –

回答

3

使用事件目標開始跟蹤

$(document).mousedown(function(event){ 
    if(event.target.id=="target"){ 
    $(this).on('mousemove',function(event){ 
      /* do tracking*/ 
     }) 
    } 
}).mouseup(function(){ 
    $(this).off('mousemove'); 
}) 

的jQuery的版本低於1.7

$(document).mousedown(function(event){ 
    if(event.target.id=="target"){ 
    $(this).mousemove(function(event){ 
      /* do tracking*/ 
     }) 
    } 
}).mouseup(function(){ 
    $(this).unbind('mousemove'); 
}) 
+0

我收到一個錯誤,說「對象[對象對象]有沒有方法'關閉'「... – ajwood

+0

OK,可能使用jQuery版本<1.7。正確?我爲jQuery的更低版本添加了另一種風格 – charlietfl

+0

Ahh yep:1.5。我應該嘗試升級。 – ajwood

2

我覺得最優雅的方式之一是使用jQuery UI draggable

$("#target").draggable({ 
    start: function(event, ui) { console.log("start dragging"); }, 
    drag: function(event, ui) { console.log("continue dragging"); }, 
    stop: function(event, ui) { console.log("stop dragging"); } 
});