2012-04-18 146 views
1

所以我有一個問題,我希望能夠在用戶按下按鈕時切換排序插件的行爲。 IE,有一個排序模式和一個查看模式。我試圖做這樣的事情:正在銷燬jQuery Sortable/Droppable

function enterEdit(){ 
    $('#someDiv').sortable(); 
} 

function enterView() { 
    $('#someDiv').sortable('destroy'); 
} 

$('#editToggle').on('click', '.toggle-button', function(e){ 
     var $target = $(e.target); 
     if(!$target.hasClass('active')) { 
      if($target[0].id == 'edit'){ 
       enterEdit();      
      } else { 
       enterView(); 
      } 
      $('#editToggle').children().removeClass('active'); 
      $target.addClass('active'); 
     } 
    }); 

這是怎麼回事。它在我初次初始化的時候就起作用了,然後它的破壞也起作用。問題是,當我再次單擊編輯時,排序不會重新初始化。有沒有人曾經嘗試過,或有更好的解決方案?謝謝!

回答

2

如果你給每個要排序的一個特定的類,然後初始化$('#someDiv').sortable({items: li.yourClass});

然後,你可以添加和刪除點擊這個類和元素將被再次排除或包含的元素。

+0

啊,讓我給一個鏡頭。 – gabaum10 2012-04-18 17:44:52

+0

好的,這對排序工作,但現在我需要爲可拖動的做同樣的事情。我嘗試添加「項目」選項,但這與排序效果不同。 – gabaum10 2012-04-18 17:52:25

+0

這個伎倆。我向我指定的句柄添加了一個可抓取的類,並將其設置爲您切換的類。謝謝! – gabaum10 2012-04-18 17:58:55

0

你有正確的想法,但我有點困惑爲什麼有雙重檢查「主動」,然後「ID」。你也應該使用$(this)來代替所有的e.target。無論如何,退房this fiddle。它清理了你正在做的事情的代碼,我認爲它可以做你想做的事情。