6

我目前在我的一個項目中使用Bootstrap select插件。 我有了選擇元件,其餘則轉換使用命令來引導選擇動態生成的表:引導選擇銷燬從DOM刪除原始選擇

_tr.find('select.selectpicker').selectpicker({ size: 10 }); 

哪裏_tr是我添加選擇元素的行。這工作正常,自舉選擇顯示,並在螢火蟲我仍然看到原來的選擇元素。

現在每行都有一個按鈕,它可以刪除(銷燬)引導選擇。 但它也刪除了原始選擇,這就是因爲我仍然需要原始選擇來做其他事情。

我用下面的命令來銷燬:

$('select#begin' + _week + _day).selectpicker("destroy"); 
$('select#end' + _week + _day).selectpicker("destroy"); 
$('select#pause' + _week + _day).selectpicker("destroy"); 

在其他插件,如果你使用毀滅,它再次顯示了原始的元素。這是boostrap select插件中的問題還是有另一種方法來刪除引導選擇並重新顯示原始選擇。

+0

感謝平視 – Mivaweb 2014-12-06 16:57:42

回答

3

找到了解決辦法,我編輯的插件功能破壞的地方,而不是刪除原來的元素,我給它回:

remove: function() { 
    this.$newElement.remove(); 
    this.$element.show(); // First it was this.$element.remove(); 
} 
+0

這可能工作得很好,但「核心黑客」往往使維護issues--下次你更新插件時,他們會迷路。也許還要研究如何正確地擴展插件。 – isherwood 2014-12-06 17:03:03

+0

我問了一個關於擴展這個插件的新問題,請參閱[Extend bootstrap select plugin](http://stackoverflow.com/questions/27334426/extend-bootstrap-select-plugin) – Mivaweb 2014-12-06 17:38:24

3

我真的很感激你的方法,因爲它幫助了我很多。 但我找到了一種方法來改進您的方法,而無需更改原始代碼。 這裏是我做過什麼:

jQuery.fn.selectpicker.Constructor.prototype.removeDiv = function() { 
    this.$newElement.remove(); 
    this.$element.show(); 
}; 

在那之後,我們可以使用:

jQuery("#some_id").selectpicker("removeDiv");