2010-05-19 6 views
5

Tengo una lista de selección, que tiene muchas opciones. Dependiendo de alguna entrada, deseo ocultar algunas opciones de la lista de selección. jQuery para ocultar las opciones de lista de selección que he escrito comotratando de ocultar las opciones de la lista de selección .. no funciona en Chrome y es decir,

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

    $(this).hide(); 

}) 

Pero este código parece funcionar sólo para Firefox y no su trabajo en el cromo y el IE. Mientras que si escribo

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

funciona para todos los navegadores. Cualquier puntero a donde debería mirar?

+0

La diferencia es que usted está tratando de ocultar elementos de 'option' individuales que en el elemento select' completa' . Hide() también podría no ser el método correcto aquí, intente con Remove(). –

+0

Sí, lo entiendo. Mi pregunta es por qué hide() no está trabajando en opciones individuales. – ninja

+0

http://stackoverflow.com/a/21085171/1544708 es posible que desee probar esta sencilla solución –

Respuesta

1

No puede ocultar elementos de opciones individuales x-browser. La única solución es reemplazar el elemento seleccionado con un elemento nuevo con solo las opciones que desea visualizar.

Ver este otro question

+0

¿Qué quiere decir con 'x-browser'? Intenté la solución sugerida por ti. el problema es que estoy usando drupal y almacena algunos datos en caché para verificar la estructura del formulario. Entonces, si elimino algún elemento y lo agrego más tarde, da error durante la validación. Así que pensé en usar el método show/hide de jquery Puedo hacerlo sin ningún error de validación. Pero parece que esto no es compatible con ningún otro navegador que no sea mozilla. – ninja

+0

x-browser = navegador cruzado (cromo, ff, es decir, ópera, etc.) – redsquare

-2

Para que nadie tenga que hacer frente a ocultar elementos de opción en esas versiones afectadas, he publicado aquí una solución que no clonar o eliminar las opciones, pero vanos envuelve alrededor de ellos, lo que podría decirse que es mucho más fáciles de tratar:

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

+0

lamentablemente esta dosis no funciona con Chrome, que no reconoce el lapso existe dentro de la seleccione – nodrog

+0

Ese enlace ya no funciona. – David

2

Aquí está una manera relativamente concisa para reconstruir la lista de selección en la demanda con nuevas opciones. Esto funciona para las opciones insertados de forma dinámica (que es lo que IE y Chrome tienen un problema con mostrar y ocultar)

$().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; 
} 
Cuestiones relacionadas