2012-03-28 26 views
0

我試圖讓一個jQuery UI事件觸發,只有當它符合被按下的條件時shift鍵處於keydown狀態(模仿被持有),並且如果不禁用事件。點擊和keydown同時拖動jQuery事件?

本示例僅在用戶單擊並保存轉換時才使用jQuery UI的.draggable來拖動容器div。

http://jsfiddle.net/zEfyC/

非工作代碼,不知道這是做這做了什麼問題的最佳途徑。

$(document).click(function(e) { 

    $('.container').keydown(function() { 
     if (e.shiftKey) { 
      $('.container').draggable(); 
     } else { 
      $('.container').draggable({ 
       disabled: true 
      }); 
     } 
    }); 
});​ 

回答

2

我看到很多錯誤代碼。首先,您只需在點擊文檔後添加關鍵字偵聽器。其次,您將keydown添加到容器div,而不是整個文檔。然後,您還需要聽取關鍵幀,因爲釋放shift鍵將禁用可拖動性,那麼您還需要將關閉:false設置爲關閉移位的情況。你的處理程序缺少e參數。試試這個:

$(function(e) { 
    var handler = function(e) { 
     if (e.shiftKey) { 
      $('.container').draggable({ 
       disabled: false 
      }); 
     } else { 
      $('.container').draggable({ 
       disabled: true 
      }); 
     } 
    }; 
    $(document).keydown(handler); 
    $(document).keyup(handler); 
}); 
+0

作品在簡單的演示精細這樣的感謝,代碼一塌糊塗,但在實際使用移被釋放時,它還是引起了奇怪的問題,一個draggable.png圖像由於某些原因變得更加不透明,並且還禁用了頁面上其他不相關的可拖動事件。 – Wyck 2012-03-28 03:25:07

+0

我認爲這是由於jQuery UI在使項目可拖動時應用的CSS樣式,或者禁用可拖動項目。你可以重寫這些(通過告訴jQuery使用不同的類或通過在元素上定義你自己的樣式) – webjprgm 2012-03-28 03:27:14

+0

哇你的權利,它應用'不透明度:.35; 過濾器:阿爾法(不透明度= 35);',其他問題已解決,我想我必須超過它。 – Wyck 2012-03-28 03:53:13