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");