今天要處理sortable方法處理的對象,拖拽的時候,位置偏移的問題。

按理應該是鼠標在哪,對象就跟着在哪的

百度了一下問題,http://blog.csdn.net/samed/article/details/50703704,在這個博文里面提到了this.scrollParent.scrollTop(),那么對這個位置進行斷點調試。(當然最開始也嘗試了一下注釋了這個地方,並沒什么用)

在這個處理過程中,我發現我得拖拽對象的scrollParent並不是想象中的直接上級,而是不知上了多少級的父級(代碼中使用的是parents().filter(...)),但是又搞不太清楚為什么,因為代碼有一萬五左右行數,看是看不完的,都想放棄了,因為坑爹的是調試的時候,會一直跳到jquery.js中,大概是調試方法還沒有很好掌握,沒辦法定住調控。(在這之中,也嘗試了把一些樣式去除掉看看,結果比較坑,去除掉一些樣式的對象是可以正常使用的,那么結論肯定是和樣式有關。)
不過因為在錯誤頁面上,能看到,拖拽對象是top值少了一截,肯定是和parent.top有關,既然如此,那么就先仔細看看scrollParent到底是如何得到的。
jQuery UI API: http://www.runoob.com/jqueryui/api-scrollparent.html
API中介紹最近的可滾動祖先,那么是不是將直接父級指定為scrollParent就可以了,怎么讓div內容超出后自動顯示滾動條:只需要用到css的一個overflow:auto的屬性就可以實現這效果了。

那么就是說在直接父級上加了樣式
<td class="ui-sortable" style="overflow: auto;">...</td>
結果,拖拽正常。
