2014-02-06 31 views
0

我有一個排序的頁面加載啓動並工作正常:啓動新的jQuery UI排序Ajax的負載

var regions = $('.region'), 
    options = $.extend({}, CvEditor.defaultDragOptions, { 
     connectWith: '.region', 
     stop: stopHandler, 
    }); 

regions.sortable(options).disableSelection(); 

然後我有一個需要重新加載頁面時,一些事情發生的頁面,而不是做整頁刷新,我通過Ajax重新加載頁面,並用Ajax響應中的可排序元素替換DOM的可排序元素。

在這一點上,我重新開始的排序完全相同的代碼:發生在這個階段

var regions = $('.region'), 
    options = $.extend({}, CvEditor.defaultDragOptions, { 
     connectWith: '.region', 
     stop: stopHandler, 
    }); 

regions.sortable(options).disableSelection(); 

沒有錯誤,但我不再能拖我的排序,所以會出現啓動失敗。

任何建議爲什麼?清楚的是,我並沒有通過Ajax添加可排序的元素,我正在替換DOM中的整個可排序容器。

+0

你打阿賈克斯重裝後的.sortable()函數? – ggzone

+0

我想你可能需要發佈一些更多的代碼,以便我們可以看到執行順序。從理論上講,你所說的一切都會檢查出來,它應該是有效的。 – Swires

+0

@Swires我在這裏放了一些簡化代碼:http://jsfiddle.net/AYW2n/3/它顯示了精簡的應用程序代碼。拖放時,整個可排序元素在DOM中被替換爲另一個元素並重新啓動。然而,新的可排序元素在第二個init運行後實際上不可排序。 –

回答

0

繼承人的最終工作小提琴:http://jsfiddle.net/AYW2n/8/

的問題是,那裏有在Ajax回調不 「的init()」 調用 - 這是解決方案:

$('.testload').load('/echo/html/', { html: snippet() }, function(){ 
    init(); 
}); 

編輯:您還需要初始化的排序功能,在您的saveHandler功能:

$(this).replaceWith(snippet()).fadeIn(200, function(){ 
    init(); 
}); 
+0

init被稱爲,但不是在正確的地方。編輯到http://jsfiddle.net/AYW2n/14/以顯示它在我設置的原始結構中。謝謝你的幫助。 –