6

Obecnie używam wtyczki Bootstrap select w jednym z moich projektów. mam dynamicznie wygenerowany tabeli, która zawiera wybieranie elementów które przekształcające załadowania Wybór za pomocą polecenia:Bootstrap select destroy usuwa pierwotny wybór z DOM

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

przypadku _tr jest hałas, gdzie dodaje się do wybierania elementów. Działa to dobrze, pokazana jest opcja bootstrap select iw firebug wciąż widzę oryginalny element select.

Teraz w każdym wierszu znajduje się przycisk, w którym usuwa (niszczy) opcję wyboru ładowania początkowego. Ale to także usuwa oryginalny wybór i to jest poblem, ponieważ nadal potrzebuję oryginalnego wyboru, aby zrobić coś innego.

użyć następującego polecenia, aby zniszczyć:

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

W innych wtyczek jeśli używasz zniszczyć, to znowu pokazuje oryginalnego elementu. Czy jest to problem w plugin boostrap select lub czy istnieje inny sposób na usunięcie opcji bootstrap select i reshow the original select.

+0

dzięki za HeadsUp – Mivaweb

Odpowiedz

3

Znaleziono rozwiązanie, edytować funkcja wtyczki zniszczyć gdzie zamiast usuwania oryginalnego elementu, pokażę go z powrotem:

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

To prawdopodobnie działa dobrze, ale „core hacki” mają tendencję do celu konserwacji issues-- następnym razem, gdy zaktualizujesz wtyczkę, którą zgubią. Może również zajrzyj do tego, jak prawidłowo rozszerzyć wtyczki. – isherwood

+0

Zadałem nowe pytanie dotyczące rozszerzenia tej wtyczki, patrz [Rozszerz plugin bootstrap select] (http://stackoverflow.com/questions/27334426/extend-bootstrap-select-plugin) – Mivaweb

3

Jestem naprawdę docenić swoją metodę, ponieważ pomaga mi dużo. Ale znalazłem sposób na ulepszenie metody bez zmiany oryginalnego kodu. Oto co zrobiłem:

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

Po tym, możemy użyć:

jQuery("#some_id").selectpicker("removeDiv"); 
Powiązane problemy