2010-06-04 22 views
15

Aquí está mi código. ¿Por qué no funciona?mostrar/ocultar div basado en la opción de selección jquery

<Script> 
    $('#colorselector').change(function() { 
     $('.colors').hide(); 
     $('#' + $(this).val()).show(); 
}); 
</Script> 
<Select id="colorselector"> 
    <option value="red">Red</option> 
    <option value="yellow">Yellow</option> 
    <option value="blue">Blue</option> 
</Select> 
<div id="red" class="colors" style="display:none"> .... </div> 
<div id="yellow" class="colors" style="display:none"> ... </div> 
<div id="blue" class="colors" style="display:none"> ... </div> 

Respuesta

58

se está ejecutando el código antes de que se cargue el DOM.

Prueba esto:

ejemplo vivo:

http://jsfiddle.net/FvMYz/

$(function() { // Makes sure the code contained doesn't run until 
        //  all the DOM elements have loaded 

    $('#colorselector').change(function(){ 
     $('.colors').hide(); 
     $('#' + $(this).val()).show(); 
    }); 

}); 
+0

Funciona y +1 para vincular a jsfiddle.net –

+0

¡increíble! ¡¡Funcionó!! – yogsma

+1

@yogsma - Me alegro de que haya ayudado. :) – user113716

1

Usted se echa en falta un :selected en el selector de show() - ver el jQuery documentation para un ejemplo de cómo utilizar este.

En su caso es probable que algo como esto:

$('#'+$('#colorselector option:selected').val()).show(); 
+2

No es necesario obtener la 'opción: seleccionada' específica. Llamar '.val()' en la selección en sí devolverá el valor de la opción seleccionada. : o) – user113716

+2

Entonces sí. Todos los días son día de escuela, gracias. –

2

Para mostrar el div mientras que la selección de un valor y ocultar al seleccionar otro valor de la lista desplegable: -

$('#yourselectorid').bind('change', function(event) { 

      var i= $('#yourselectorid').val(); 

      if(i=="sometext") // equal to a selection option 
      { 
       $('#divid').show(); 
      } 
      elseif(i=="othertext") 
      { 
       $('#divid').hide(); // hide the first one 
       $('#divid2').show(); // show the other one 

       } 
}); 
0
<script> 
$(document).ready(function(){ 
    $('#colorselector').on('change', function() { 
     if (this.value == 'red') 
     { 
     $("#divid").show(); 
     } 
     else 
     { 
     $("#divid").hide(); 
     } 
    }); 
}); 
</script> 

Haga lo siguiente para cada valor

Cuestiones relacionadas