2011-08-22 105 views
0

我與選項初始化影片排序列表:jQuery Draggable + Sortable - 如何更改可排序項目?

items: '.videoBox:not(.isFirst, .isLast)', 

第一個和最後的影片都沒有排序,也不是他們以任何方式拖動 - 這是偉大的!

使用connectToSortable選項連接到另一個可拖動的視頻列表。一些影片,我希望能夠給isLastisFirst影片(其中有很多),所以對於那些我需要這些物品再次可排序的,所以我用之間拖動:

start: function(event, ui) { 
    if (// my test //) 
    { 
     $('#timeline').sortable('option', 'items', '.videoBox'); 
    } 
}, 

這讓我在以前不可排序的項目中拖放 - 非常棒!

現在我想的排序恢復到設置一次拖動已完成初始的,所以我把這個在拖動INIT:

stop: function() { 
    if (// my test //) 
    { 
    $('#timeline').sortable('option', 'items', '.videoBox:not(.isFirst, .isLast)'); 
    $('#timeline').sortable('refresh'); 
    $('#timeline .videoBox.isLast, #timeline .videoBox.isFirst').draggable('destroy'); 
    } 
}, 

這個偉大的工程IF可拖拽沒有投進#timeline時間。但是,如果它被放入#timeline那麼這個回調似乎不被稱爲(?)。我已將相同的代碼添加到可排序的事件中:stop,updatedeactivate,雖然我可以看到這些回調被觸發,但isFirstisLast視頻仍可拖動。

但它們不可排序 - 所以我認爲問題在於.draggable('destroy')位......任何想法/建議?

乾杯, 湯姆

回答

0

我還沒有能夠修復,甚至找出上述問題的原因。然而,我發現了一個似乎相當健壯的解決方法。

stop回調sortable的init:

stop: function() { 
    $('#timeline').sortable('option', 'items', '.videoBox:not(.isFirst, .isLast)'); 
    opts = $('#timeline').sortable('option'); 
    $('#timeline').sortable('destroy'); 
    $('#timeline').sortable(opts); 
} 

第一行設置的項目的選擇,因爲我一直在做之前。然後,我將sortable init選項保存到一個變量中,銷燬sortable行爲並使用正確的選項重新初始化它。這就是我現在想要的 - 我銷燬了isFirstisLast項目上的可拖動項)。我已經完全按照draggable回撥中的stop回撥離開了回撥,這是拖拽不能結束排序時的情況。

似乎有點大錘的做法,但努力尋找更好的方法。有興趣知道是否有人有任何其他建議。

Tom

相關問題