Ich habe ein Objekt mit Schlüssel / Wert-Optionspaaren, die ich aus einer Auswahlliste ausblenden / entfernen möchte. Keiner der folgenden Optionswähler funktioniert. Was vermisse ich?
$.each(results['hide'], function(name, title) {
$("#edit-field-service-sub-cat-value option[value=title]").hide();
$("#edit-field-service-sub-cat-value option[@value=title]").hide();
});
jquery
html-select
Hitfactory
quelle
quelle
Antworten:
Für das, was es wert ist, existiert die zweite Form (mit der
@
) in jQuery 1.3 nicht. Das erste funktioniert nicht, weil Sie anscheinend eine variable Interpolation erwarten. Versuche dies:Beachten Sie, dass dies wahrscheinlich auf verschiedene abscheuliche Arten funktioniert, wenn es
title
jQuery Selector-Metazeichen enthält.quelle
Sie können diesen X-Browser nicht ausführen. Wenn ich mich erinnere, dh Probleme hat. Am einfachsten ist es, eine geklonte Kopie der Auswahl aufzubewahren, bevor Sie Elemente entfernen. Auf diese Weise können Sie die fehlenden Elemente einfach entfernen und dann wieder anhängen.
quelle
Ich habe einen besseren Weg gefunden und es ist sehr einfach:
Um es erneut anzuzeigen, suchen Sie einfach diese Option (nicht span) und
$("option_you_want_to_show").unwrap()
.Es wurde auf Chrome und Firefox getestet .
quelle
$("select").val("0").trigger("change")
. Einfachere Lösung ist diesHier ist mein Spin, wahrscheinlich etwas schneller aufgrund nativer DOM-Methoden
quelle
Dies funktioniert in Firefox 3.0, jedoch weder in MSIE 8 noch in Opera 9.62:
Aber anstatt eine Option zu verstecken, kann man sie einfach deaktivieren:
Die erste der beiden obigen Zeilen bezieht sich auf Firefox und übergibt den Fokus an die zweite Option (vorausgesetzt, sie hat den Wert = "2"). Wenn wir es weglassen, ist die Option deaktiviert, aber die Option "aktiviert" wird weiterhin angezeigt, bevor wir sie ablegen. Daher konzentrieren wir uns auf eine andere Option, um dies zu vermeiden.
quelle
Dies kann browserübergreifend erfolgen. Es ist nur eine benutzerdefinierte Programmierung erforderlich. Bitte sehen Sie meine Geige unter http://jsfiddle.net/sablefoste/YVMzt/6/ . Es wurde getestet, um in Chrome, Firefox, Internet Explorer und Safari zu funktionieren.
Kurz gesagt, ich habe ein verstecktes Feld,
#optionstore
in dem das Array nacheinander gespeichert wird (da Sie in JavaScript keine assoziativen Arrays haben können). Wenn Sie dann die Kategorie ändern, werden die vorhandenen Optionen analysiert (nur beim ersten Durchlauf), in die geschrieben wird#optionstore
, alles gelöscht und nur die mit der Kategorie verknüpften Optionen zurückgesetzt.HINWEIS: Ich habe dies erstellt, um andere Optionswerte als den dem Benutzer angezeigten Text zuzulassen, sodass es sehr flexibel ist.
Der HTML:
Das JavaScript / jQuery:
quelle
resultgood
ist lediglich eine Überprüfung, ob eineoptionlisting
hinzugefügt wurde. Wenn dies der Fall war, wird die Liste von<option>
s zurückgegeben. Wenn nicht, wird nichts zurückgegeben. Dies ist das, was Sie möchten, wenn Sie versehentlich eine Klasse aufgenommen haben, die tatsächlich nicht vorhanden war (in diesem Beispiel beispielsweise Sub-Food6). Um ein Leerzeichen in einem Dropdown-Menü zurückzugeben, ändern Sie die Deklarationszeile am Anfang der Funktion invar optionlisting="<option value=''></option>";
.data
Attribut; es ist semantisch korrekter.Am besten setzen Sie deaktiviert = wahr für die Optionselemente, die Sie deaktivieren möchten, und dann im CSS-Set
Selbst wenn der Browser das Ausblenden des deaktivierten Elements nicht unterstützt, kann es dennoch nicht ausgewählt werden. In Browsern, die dies unterstützen, werden sie jedoch ausgeblendet.
quelle
Schauen Sie sich diese Frage und die Antworten an -
Auswahloptionen deaktivieren ...
Wenn Sie sich Ihren Code ansehen, müssen Sie möglicherweise den Attributwert angeben
von jQuery-Attributselektoren
BEARBEITEN:
Ich habe gerade festgestellt, dass Sie den Titel aus dem Funktionsparameter erhalten. In diesem Fall sollte die Syntax lauten
quelle
In Bezug auf den Vorschlag von redsquare habe ich Folgendes getan:
und dann um dies umzukehren:
quelle
Das Problem ist, dass Internet Explorer die Methoden zum Ausblenden und Anzeigen für ausgewählte Optionen anscheinend nicht unterstützt. Ich wollte alle Optionen meiner ddlReasonCode-Auswahl ausblenden, die nicht den aktuell ausgewählten Typ als Wert des Attributs "attType" hatten.
Während das schöne Chrome ziemlich zufrieden war mit:
Dies ist, was IE erforderlich ist (Kinder, versuchen Sie dies nicht bei CHROME :-)):
Ich fand diese Verpackungsidee unter http://ajax911.com/hide-options-selecbox-jquery/
quelle
Nach dem Testen funktionieren die oben von verschiedenen, einschließlich Chaos, veröffentlichten Lösungen zum Ausblenden von Elementen jetzt in den neuesten Versionen von Firefox (66.0.4), Chrome (74.0.3729.169) und Edge (42.17134.1.0).
Für IE funktioniert dies nicht, Sie können die Option jedoch deaktivieren
und erzwingen Sie dann die Auswahl eines anderen Werts.
Beachten Sie, dass für eine deaktivierte Option der Wert der Dropdown-Liste jetzt null ist und nicht der Wert der ausgewählten Option, wenn sie deaktiviert ist.
quelle
Es scheint, dass Sie auch das Attribut "ausgewählt" aktualisieren müssen. Andernfalls wird die aktuell ausgewählte Option möglicherweise weiterhin angezeigt - obwohl sie wahrscheinlich verschwindet, wenn Sie tatsächlich eine Option auswählen (das hat sie für mich getan): Versuchen Sie Folgendes:
quelle
Ich habe versucht, Optionen aus einer Auswahlliste basierend auf der ausgewählten Option aus einer anderen Auswahlliste auszublenden. Es funktionierte in Firefox3, aber nicht in Internet Explorer 6. Ich habe hier einige Ideen und habe jetzt eine Lösung, daher möchte ich Folgendes mitteilen:
Der JavaScript-Code
Der HTML
Es wurde als in Firefox 3 und Internet Explorer 6 funktionierend überprüft.
quelle
id
Attribut eindeutig sein: id = Dieses Attribut weist einem Element einen Namen zu. Dieser Name muss in einem Dokument eindeutig sein.Um eine Verkettung von Zeichenfolgen zu vermeiden, können Sie jQuery.grep verwenden
quelle
Wahrscheinlich nicht so elegant oder wiederverwendbar wie ein JQuery-Plugin. Ein anderer Ansatz besteht darin, Optionselemente einfach zu speichern und nach Bedarf auszutauschen:
Tun Sie dies, um das Objekt zu verwenden:
quelle
Ich habe eine Lösung implementiert, die eine Funktion verwendet, die eine Combobox (
<select>
) basierend auf benutzerdefinierten Datenattributen filtert . Diese Lösung unterstützt:<option>
zeigen , wenn der Filter die Auswahl leer lassen würde.<option>
Elemente ohne das Datenfilterattribut bleiben unberührt.Getestet mit jQuery 2.1.4 und Firefox, Chrome, Safari und IE 10+.
Dies ist das Beispiel-HTML:
Der jQuery-Code für die Filterung:
Um es zu verwenden, rufen Sie einfach die Funktion mit dem Wert auf, den Sie behalten möchten.
Die resultierende Auswahl lautet dann:
Die ursprünglichen Elemente werden von der Funktion data () gespeichert, sodass bei nachfolgenden Aufrufen die richtigen Elemente hinzugefügt und entfernt werden.
quelle
Die Antwort weist darauf hin, dass dies
@
für neuere jQuery-Iterationen ungültig ist. Während dies korrekt ist, verbergen einige ältere IEs immer noch keine Optionselemente. Für alle, die sich mit dem Ausblenden von Optionselementen in den betroffenen Versionen befassen müssen, habe ich hier eine Problemumgehung veröffentlicht:http://work.arounds.org/issue/96/option-elements-do-not-hide-in-IE/
Wickeln Sie es einfach mit einer Spannweite ein und ersetzen Sie es in der Ausstellung.
quelle
Jeder, der über diese Frage stolpert, könnte auch die Verwendung von Chosen in Betracht ziehen , was die Möglichkeiten von Select erheblich erweitert.
quelle
Dann stellen Sie in Ihrem CSS sicher, dass Sie haben
quelle
Ich weiß, dass diese Frage beantwortet wurde. Aber meine Anforderung war etwas anders. Anstelle von Wert wollte ich nach Text filtern. Also habe ich die Antwort von @William Herry so geändert.
Auf diese Weise können Sie den Wert auch verwenden, indem Sie solche Einträge ersetzen
quelle
Für die Option zum Ausblenden wählen Sie :
Wo option_node ist HTMLOptionElement
PS: Ich benutze JQuery nicht, aber ich vermute, dass es funktionieren wird:
quelle
Ich fand es am besten, das DOM einfach vollständig zu entfernen.
Browserübergreifend kompatibel. Funktioniert auch mit IE11
quelle
Option: eq (0) - Option am Index '0' im Auswahlfeld ausblenden.
quelle
Sie können mit / auszublenden zeigen Wert oder Klassenname. Überprüfen Sie den folgenden Link mit dem Arbeitsbeispiel.
Jquery ausgewählte Optionen mit Wert oder Klassennamen ein- / ausblenden.
quelle
$ ("# ddtypeoftraining option [value = 5]"). css ("display", "none"); $ ('# ddtypeoftraining'). selectpicker ('refresh');
quelle