2010-02-23 8 views
5

HTMLevento de cambio de jQuery de selección no está siendo activado a través de otra función de cambio de atributo seleccionado

<select multiple="multiple" id="myID" name="myName"> 
    <option value="blue">blue</option> 
    <option value="red">red</option> 
    <option value="green">green</option>     
</select> 

jQuery:

$('select') 
    .change(function(){ 
     alert("Change Event Triggered On:" + $(this).attr("value")); 
    }) 

que, como es, funciona. Si hago clic en un elemento en el multiselección, se activa la alerta.

Sin embargo, cuando 'Seleccionar' un elemento del menú de selección a través de jQuery, así:

$('#myOtherSelector') 
    .click(function(){ 
     var $matchingOption = [goes and selects the specific OPTION to toggle] 
     if ($matchingOption.attr("selected")){ 
      $matchingOption.removeAttr("selected") 
     }else{ 
    $matchingOption.attr("selected","selected"); 
     } 
    }) 

Ese guión trabaja en que cambia el atributo seleccionado y visualmente actualiza la lista de opciones, sin embargo, el evento onchange no se desencadena en ese escenario.

¿Por qué es eso?

Respuesta

11

Cambiar los elementos con un código de ese tipo no activa los controladores de eventos. Puede hacerlo usted mismo sin embargo:

else { 
    $matchingOption.attr('selected', 'selected').trigger('change'); 
} 
+0

'doh! ¡Por supuesto! ¡Gracias! –

+0

hi pointy ... He enfrentado un problema que es bastante similar a esta pregunta .. Tengo un menú desplegable de selección múltiple que quiero activar el evento onchange. pero no me disparo. ¿Cómo puedo lograr esto? gracias de antemano – chhameed

+1

Con los elementos ''. – Pointy

Cuestiones relacionadas