首先,我的思路是,定義三個ul,作為三欄。每個可拖放的div.dragBox都放在li中。
1.每個div.dragBox中有div.handler和div.container,其中div.handler是用來拖放的
2.定義了一個Drag的函數對象,這個對象有5個原型方法:init,start,draging,addTarget,end。並且有2個屬性:$parentBox,$ele
3.為每個div.handler定義一個Drag對象,這樣,它們就擁有了各自的$ele,$parentBox
4.由於我只希望這個功能在鼠標左鍵按下時才能實現,所以使用了jQuery中的event對象來判斷。在jQuery中的event對象中,event.which表示了鼠標按下了哪個按鍵:1表示左鍵,2表示中間鍵,3表示右鍵
5.我把start方法綁定在了div.handler的onmousedown事件上,而把draging和end方法在onmousedown 事件觸發時,分別綁定在了document的onmousemove和onmouseup事件上,純屬個人意願,因為我覺得這樣的綁定比同時將事件綁定在 div.handler和document兩個對象上效率更高些,而且能避免重複執行相同的draging和end方法。
6.關於怎樣添加合適的li.target,我的方法是,先判斷div.dragBox接近哪個ul,然後調用addTarget,判斷接近這個ul中的哪個li,我覺得大眾的方法也是這樣的吧
最後,附上demo地址http://missdora.net/blog/demos/iGoogleDora/