2013-03-14 85 views
1

任何人都可以請解釋一下,是否可以將.sortable應用於將被動態添加的未來jQuery對象,這意味着它不存在於當前的 DOM中,就像已棄用的.live函數一樣?謝謝。可以將.sortable應用於動態添加的對象嗎?

+4

您的意思是它是否無償地使用根級'文檔'委託所有和任何現在和未來的事件,使懶惰的程序員生活更容易,而不是使用範圍更接近和邏輯更符合事件的目的?嗯。我不知道。不要希望,否則會像'$ .live()'那樣被抽出。 – 2013-03-14 08:24:31

+0

如果只有某種方法可以找出...... – JJJ 2013-03-14 08:25:56

+0

查看'sortable'的'refresh'方法:http://api.jqueryui.com/sortable/#method-refresh您需要在添加後調用它動態項目可排序。 – 2013-03-14 08:30:06

回答

3

總之:第

注意到以下幾點:.live因爲jQuery的1.7已被棄用,並在jQuery的1.9被刪除。該功能已被移動/替換爲.on方法。此方法只能檢測事件處理程序,如click.sortable不是事件處理程序,因此這不起作用。

您可以做的唯一的事情是在創建元素後調用.sortable方法(從jQuery UI)。

+0

好吧,我明白了,這意味着我想成爲「可排序」的元素必須提前存在。謝謝! – 2013-03-14 08:38:32

0

回答於2018年,您可以通過在向dom添加新元素之後初始化排序來實現此目的。在我的情況下,我正在製作一個表單佈局插件,其中一個可以添加列和字段並需要對它們進行排序。因此,在創建(動態)新列之後,我重新應用我已變成函數的代碼:

function g2f_reload_sortable() { 
    // reapply sortable to new items 
    $('#g2f-form-fields div[class^="col"]').sortable({ 
     placeholder: "ui-state-highlight", 
     forcePlaceholderSize: true, 
     connectWith: "#g2f-form-fields div[class^='col']", 
     handle: ".g2f-field-move" 
    }); 
    $('#g2f-form-fields div[class^="col"]').disableSelection(); 
} 

這適用於我。

相關問題