2011-05-01 51 views
12

我正在嘗試寫一個拖動&使用HTML選擇功能& JavaScript。我的意思是,將會有一組具有任意絕對位置的對象。我希望能夠將光標拖到佈局的區域。將其視爲RTS策略(選擇單元)或者任何矢量圖形編輯器(選擇用於移動它們並編輯的對象)。JavaScript Drag&Select功能完成正確

首先,我知道在Google & SO的前幾頁出現的東西。因此,我決不會要求我爲這些東西使用Google,並在這裏發佈一些隨機鏈接。

我能找到的大多數解決方案在某種程度上都是有缺陷的。主要的問題是抑制實際的文本選擇,這看起來有點違背Web瀏覽器的本質。一些代碼片段導致選擇閃爍,我覺得很煩人。有些在所有主流瀏覽器中表現不佳。

我在詢問您實際使用的代碼/庫的建議,或者看到成功使用的代碼/庫的建議。

第二件事是,我希望真正瞭解抑制選擇背後的JavaScript內部。理論上應該怎麼做。是否有任何非黑客的方式來實現這一目標?

是我能找到的最接近的是這樣的: http://view.jquery.com/tags/ui/1.5b2/demos/ui.selectable.html

但是它似乎是緊密耦合與jQuery UI,而這又需要jQuery的1.3.x的,而我真的很期待使用jQuery 1.5

回答

20

對不起,我的英語。我使用這個庫進行拖放,這很好。不知道是否是你所需要的,但它可以幫助:

http://threedubmedia.com/code/event/drop/demo/selection

http://threedubmedia.com/code/event/drag

http://threedubmedia.com/code/event/drop

+0

這看起來非常好。你嘗試過哪些網頁瀏覽器?還有:它使用HTML5還是可以與HTML4一起使用? – julkiewicz 2011-05-01 20:42:01

+0

那麼,當我開始一個交互式國際象棋網站的項目時,我發現這個庫,我仍在努力。所以,這是我第一次使用它,它還不在生產站點,但幾個月來我從未發現任何錯誤或故障。我使用FF3.6作爲主要的開發瀏覽器,我經常在IE上進行測試,並且偶爾在Chrome上進行測試。我使用HTML5,但我確定它必須在4上工作。 – morgar 2011-05-01 20:53:35

+0

好的,謝謝它看起來非常整齊。另外文檔是體面的。我一定會看看。 – julkiewicz 2011-05-01 20:56:22

0

即使您希望使用的jQuery 1.5,我還是會建議您查看jquery- ui Draggable選項(從我解釋你的願望的方式來看,這看起來像你正在嘗試完成的)。

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

jQuery的UI總是非常快趕上與jQuery的最新版本,並且在很多情況下將正常工作。我發現jquery-ui往往比我發現的任何其他附加組件都更好地跟jquery保持同步。

關於想知道這應該如何完成,你可以很容易地探索jquery的未壓縮核心。這是非常有據可查,相當簡單的閱讀。

+0

至於jquery-ui與核心保持同步,我有一些擔憂。它落後於兩個主要版本(1.4和1.5),並且從我記得的時間來看,它已經落後了至少一年。似乎1.4引入瞭如此多的變化,以至於沒有人願意更新所有代碼。 – julkiewicz 2011-05-01 21:47:51

1

主要問題是抑制實際的文本選擇,這似乎與Web瀏覽器的本質相反。

您正在查找的功能是e。的preventDefault();

$("#inputform").mousedown(function(e){ 
    e.preventDefault(); 
    //console.log('mousedown'); 
}).mouseup(function(e){ 
    e.preventDefault(); 
    //console.log('mouseup'); 
}); 

這只是解決了文本選擇的問題。我可以在網上看到各種拖動選擇js scritps,但不知怎的,我無法讓它們工作。

1

我不是100%確定,如果我把你的問題正確的。但是我做了兩個插件來處理你描述的我認爲的案例。他們不需要任何依賴,所以不需要jQuery或者什麼都不需要。即使你不使用它們,代碼也有很好的文檔記錄,並且可以通過編寫自己的代碼來幫助你。

對於拖放,有dragNdrop
對於選擇技工,有DragSelect

不客氣。希望有所幫助!