2010-05-19 16 views
5

Ho una lista di selezione, che ha un sacco di opzioni. A seconda di alcuni input, voglio nascondere alcune opzioni dall'elenco di selezione. jQuery per nascondere le opzioni da selezionare Elenco ho scritto comecercando di nascondere le opzioni dalla lista di selezione .. non funziona su Chrome e cioè

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

    $(this).hide(); 

}) 

Ma questo codice sembra funzionare solo per Firefox e la sua non funziona su Chrome e IE. Considerando che se scrivo

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

funziona per tutti i browser. Qualche puntatore dovrei guardare?

+0

la differenza è che stai cercando di nascondere singoli elementi 'option' in contrasto con la completa' elemento select' . Anche Hide() potrebbe non essere il metodo corretto, prova Remove(). –

+0

Sì, lo capisco. La mia domanda è perché hide() non sta lavorando su singole opzioni. – ninja

+0

http://stackoverflow.com/a/21085171/1544708 potresti provare questa semplice soluzione –

risposta

1

Non è possibile nascondere singoli elementi di opzione x-browser. L'unica soluzione è sostituire la selezione con un nuovo elemento con solo le opzioni che desideri visualizzare.

Vedi quest'altra question

+0

Cosa intendi con 'x-browser'? Ho provato la soluzione suggerita da te. il problema è che sto usando drupal e memorizzo alcuni dati nella cache per verificare la struttura del modulo. Quindi, se rimuovo alcuni elementi e li aggiungo in seguito, viene visualizzato un errore durante la convalida. Quindi ho pensato di usare il metodo show/hide di jquery. Posso farlo senza alcun errore di validazione. Ma sembra che questo non è supportato in nessun browser diverso da Mozilla. – ninja

+0

x-browser = browser incrociato (chrome, ff, ie opera ecc.) – redsquare

-2

Per chiunque abbia a che fare con nascondere elementi di opzione in quelle versioni interessate, ho postato una soluzione qui che non clonare o rimuovere le opzioni, ma avvolge campate intorno a loro, che probabilmente è molto più più facile da affrontare:

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

+0

sfortunatamente questa dose non funziona con chrome, che non riconosce lo span esistente all'interno del select – nodrog

+0

Questo link non funziona più. – David

2

Ecco un modo relativamente conciso per ricostruire l'elenco di selezione a richiesta con nuove opzioni. Questo funziona per le opzioni inseriti in modo dinamico (che è ciò che IE e Chrome hanno un problema con mostrare e nascondere)

$().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; 
} 
Problemi correlati