2010-05-19 3 views
5

Ich habe eine Auswahllisten, die viele Optionen hat. Abhängig von einigen Eingaben möchte ich einige Optionen aus der Auswahlliste ausblenden. Zum Ausblenden Optionen aus der Auswahlliste habe ich geschrieben jquery wieversuchen, Optionen von selectlist ausblenden .. nicht auf Chrom arbeiten und dh

$('#selectlist1 option').each(function(){ 

    $(this).hide(); 

}) 

Aber dieser Code scheint nur für Firefox zu arbeiten, und es funktioniert nicht auf Chrom und das heißt. Wenn ich schreibe

$('#selectlist1').hide(); 

es funktioniert für alle Browser. Irgendein Zeiger wohin soll ich schauen?

+0

Der Unterschied ist, Sie versuchen, einzelne 'option' Elemente zur vollständigen' select' Element im Gegensatz zu verstecken . Hide() ist möglicherweise auch nicht die richtige Methode hier, versuche Remove(). –

+0

Ja, ich verstehe das. Meine Frage ist, warum hide() nicht an einzelnen Optionen arbeitet. – ninja

+0

http://Stackoverflow.com/a/21085171/1544708 Sie können diese einfache Lösung versuchen –

Antwort

1

Sie können einzelne Optionselemente x-browser nicht ausblenden. Die einzige Lösung besteht darin, die Auswahl durch ein neues Element mit nur den Optionen zu ersetzen, die Sie anzeigen möchten.

Sehen Sie diese andere question

+0

Was meinen Sie mit "x-Browser"? Ich habe die von dir vorgeschlagene Lösung ausprobiert. Das Problem ist, dass ich drupal verwende und einige Daten im Cache zur Überprüfung der Formularstruktur ablege. Wenn ich also ein Element entferne und später hinzufüge, gibt es einen Fehler bei der Validierung. Also ich dachte, mit der show/hide-Methode von jquery kann ich das ohne Validierungsfehler tun. Aber es scheint, dass dies in keinem anderen Browser als Mozilla unterstützt wird. – ninja

+0

x-browser = cross browser (chrome, ff, dh opera usw.) – redsquare

-2

Für jedermann mit versteckt Option Elemente in diesen Versionen betroffen beschäftigen zu müssen, ich gepostet hier eine Abhilfe, die nicht die Optionen nicht klonen oder entfernen, sondern wickelt Spannweiten um sie herum, die wohl viel einfacher zu handhaben:

http://work.arounds.org/issue/96/option-elements-do-not-hide-in-IE/

+0

leider funktioniert diese dose nicht mit chrome, die nicht erkennt, dass der span innerhalb der select existiert – nodrog

+0

Dieser link funktioniert nicht mehr. – David

2

Hier ist ein relativ kurzer Weg, um die Auswahlliste auf Nachfrage mit neuen Optionen für den Wiederaufbau. Dies funktioniert für dynamisch eingefügt Optionen (was IE und Chrome haben ein Problem mit Ein- und Ausblenden)

$().ready(function() { 
    //store a reference 
    var select = $('#myselect'); 
}); 

function rebuild_select(arr_new_options) { 
    var parent = select.parent(); 
    select.empty(); 
    var clone = select.clone(); 
    select.remove(); 
    for(var x=0; x < arr_new_options.length; x++) { 
     clone.append(arr_new_options[x]); 
    } 
    parent.append(clone); 
    select = clone; 
} 
Verwandte Themen