So erstellen Sie einen dynamischen Bootstrap-Multiselect

9

Ich versuche Bootstrap Multiselect zu verwenden, ich habe den folgenden Code verwendet

html

%Vor%

und Skript

%Vor%

Ich versuche, jede Option dynamisch dem Bootstrap-Multiselect hinzuzufügen, aber es funktioniert nicht richtig

Demo-Seite hier: Ссылка

Aber es funktioniert statisch: Ссылка

    
Chithra Mohan 18.05.2015, 10:19
quelle

3 Antworten

18

Sie müssen nach der Verwendung die .multiselect('rebuild') Methode der Mehrfachauswahl verwenden .append()

%Vor%

Aktualisierte Geige

Vollständiger Code

%Vor%     
Shaunak D 18.05.2015 10:25
quelle
6

Sie müssen

hinzufügen %Vor%

bis zum Ende des Klickereignisses, um die Mehrfachauswahl wiederherzustellen.

    
Jamie Dunstan 18.05.2015 10:25
quelle
-1

Sie können append Ihre Liste zu bootstrap ul und zu Ihrem select

hinzufügen %Vor%

Hier ist eine neue Demo: Ссылка

    
Islam Zedan 18.05.2015 10:23
quelle
Django: Verwenden von Annotate, Count und Distinct in einem Queryset ___ answer30817617 ___

Ihr Fall scheint ein Grenzfall zu sein, aber eine Include-Datei kann als eine Art Vertrag zwischen dieser Quelldatei und anderen Quelldateien angesehen werden, die diese Funktionen benötigen.

Indem Sie den "Vertrag" in eine Header-Datei schreiben, können Sie sicherstellen, dass die anderen Quelldateien wissen, wie diese Funktionen aufgerufen werden, oder Sie werden vielmehr sicher sein, dass der Compiler eingefügt wird der richtige Code und überprüfen Sie seine Gültigkeit zum Zeitpunkt der Kompilierung.

Was aber, wenn Sie dann (versehentlich) den Funktionsprototyp in der entsprechenden Quelldatei geändert haben?

Indem Sie in diese Datei den gleichen Header wie alle anderen einfügen, werden Sie bei der Kompilierung gewarnt, sollte eine Änderung versehentlich den Vertrag "brechen".

Update (aus @ tmlens Kommentar): Auch wenn dies nicht der Fall ist, kann eine Include-Datei auch Deklarationen und Pragmas wie #defines, typedef, enum, struct und inline verwenden als Compiler-Makros würde es keinen Sinn machen, mehr als einmal zu schreiben (eigentlich wäre das gefährlich an zwei verschiedenen Stellen zu schreiben, damit die Kopien nicht mit schlechten Ergebnissen zusammenfallen). Einige davon (z. B. ein Pragma-Struktur-Pragma ) könnten zu schwer zu erkennenden Fehlern werden.

    
___ answer30819602 ___

Dies ist nützlich, weil Funktionen deklariert werden können, bevor sie definiert werden.

So kommt es, dass Sie die Deklaration haben, gefolgt von einem Aufruf \ Aufruf, gefolgt von der Implementierung. Das musst du nicht, aber du kannst es.

Die Header-Datei enthält die Deklarationen. Sie können jederzeit aufrufen, solange der Prototyp übereinstimmt. Und solange der Compiler vor dem Kompilieren eine Implementierung findet.

    
___ qstntxt ___

Ich verstehe, dass wenn eine Quelldatei Funktionen aus einer anderen Datei referenzieren muss, sie ihre Header-Datei enthalten muss, aber ich verstehe nicht, warum die Quelldatei eine eigene Header-Datei enthält. Der Inhalt in der Header-Datei wird einfach kopiert und als Funktionsdeklaration in die Quelldatei eingefügt. Für Quelldatei, die eine eigene Header-Datei, eine solche "Deklaration" scheint mir nicht notwendig, in der Tat, Projekt noch kompilieren und verknüpfen kein Problem nach dem Entfernen der Header aus der Quelldatei, so was ist der Grund für die Quelldatei gehören eigene Kopfzeile?

    
___ answer30817652 ___

Der Hauptvorteil besteht darin, dass der Compiler die Konsistenz Ihrer Kopfzeile und ihrer Implementierung überprüft. Sie tun es, weil es bequem ist, nicht weil es erforderlich ist. Es kann durchaus möglich sein, das Projekt ohne diese Einbeziehung korrekt kompilieren und ausführen zu lassen, aber es kompliziert die Wartung Ihres Projekts auf lange Sicht.

Wenn Ihre Datei keine eigene Kopfzeile enthält, können Sie versehentlich in eine Situation geraten, in der die Vorwärtsdeklaration einer Funktion nicht mit der Definition der Funktion übereinstimmt - vielleicht weil Sie einen Parameter hinzugefügt oder entfernt haben und vergessen haben, die Kopfzeile zu aktualisieren . Wenn dies geschieht, würde der Code, der auf der Funktion mit Nichtübereinstimmung beruht, noch kompilieren, aber der Aufruf würde zu undefiniertem Verhalten führen. Es ist viel besser, wenn der Compiler diesen Fehler findet, was automatisch geschieht, wenn Ihre Quelldatei eine eigene Kopfzeile enthält.

    
___ tag123headerfiles ___ Header-Dateien werden in einigen Programmiersprachen verwendet, um Quellcode als eine einzelne Kopie zu speichern, die in mehreren Quelldateien wiederverwendet werden kann. Dieses Tag sollte für Fragen zur Verwendung von Header-Dateien verwendet werden. Ein Tag für die Programmiersprache wie C, C ++, PHP oder Ruby sollte zusammen mit diesem Tag verwendet werden, da die Verwendung der Header-Datei zwischen Programmiersprachen variieren kann. Dieses Tag wird normalerweise nicht mit der Java- oder Go-Programmierung und der Import-Anweisung verwendet. ___ tag123c ___ C ist eine universelle Computerprogrammiersprache, die für Betriebssysteme, Bibliotheken, Spiele und andere Hochleistungsanwendungen verwendet wird. Dieses Tag sollte bei allgemeinen Fragen zur C-Sprache verwendet werden, wie in der Norm ISO 9899: 2011 definiert. Fügen Sie ggf. ein versionsspezifisches Tag wie c99 oder c90 für Fragen zu älteren Sprachstandards hinzu. C unterscheidet sich von C ++ und es sollte nicht mit dem C ++ - Tag kombiniert werden, wenn ein rationaler Grund fehlt. ___ answer30822348 ___

Praktisches Beispiel - gehen Sie von folgenden Dateien in einem Projekt aus:

%Vor%

Beachten Sie, dass die Deklaration in %code% nicht mit der Definition in %code% übereinstimmt; Die Rückgabetypen sind unterschiedlich. %code% ruft die Funktion %code% auf, vorausgesetzt, sie gibt eine %code% gemäß der Deklaration in %code% zurück.

%code% und %code% werden getrennt voneinander kompiliert. Da %code% %code% wie in %code% deklariert, kompiliert es erfolgreich. Da %code% nicht %code% enthält, ist dem Compiler der Typkonflikt zwischen der Deklaration und der Definition nicht bekannt, so dass er ebenfalls erfolgreich kompiliert wird.

Wenn Sie die beiden Objektdateien miteinander verknüpfen, stimmt der Maschinencode für den Funktionsaufruf nicht mit dem überein, was der Maschinencode für die Funktionsdefinition erwartet. Der Funktionsaufruf erwartet, dass ein %code% -Wert zurückgegeben wird, aber die Funktionsdefinition gibt %code% zurück. Dies ist ein Problem, insbesondere wenn die beiden Typen nicht die gleiche Größe haben. Im besten Fall erhalten Sie ein Müll-Ergebnis.

Wenn Sie %code% in %code% einfügen, kann der Compiler diese Abweichung erkennen, bevor Sie Ihr Programm ausführen.

Und, wie in einer früheren Antwort darauf hingewiesen wird, wenn %code% irgendwelche Typen oder Konstanten definiert, die von %code% verwendet werden, dann müssen Sie sie definitiv einbeziehen.

    
___ tag123declaration ___ Deklaration ist der Teil des Unterprogramms (Prozedur oder Funktion), der das Protokoll (Header) liefert, aber nicht den Rumpf des Unterprogramms. ___ answer30817605 ___

Die Header-Datei sagt den Leuten, was die Quelldatei tun kann.

Also muss die Quelldatei für die Headerdatei ihre Verpflichtungen kennen. Deshalb ist es enthalten.

    
___