¿Cómo editar el atributo ‘onchange’ en una etiqueta ‘select’? (usando jquery)

Estoy tratando de editar el evento ‘onchange’ de un elemento ‘select‘ existente.

Por ejemplo, tengo el siguiente código:

 

y cada vez que trato de cambiar su atributo ‘onchange’ estaba usando lo siguiente:

 $("#sel_id").attr("onchange", "foo_2()"); 

FYI, este código que debería estar bien no funciona, el atributo ‘onchange’ permanece sin cambios. Entonces, ¿cómo debería editarlo?

ENMIENDA:

Puede eliminar el atributo y luego enlazar una función diferente como:

 $("#sel_id").removeAttr("onchange").bind("change", function(){ foo_2(); }); 

pero el problema persiste, ¿es posible cambiar el atributo ‘onchange’ sin eliminarlo en primer lugar?

No es una respuesta exacta a la pregunta, pero probablemente eliminaría el evento usando esto:

 document.getElementById('sel_id').onchange = undefined; 

(como se ve en Cómo borrar / eliminar el controlador de eventos de JavaScript? )

y luego ve con esto:

 $('#sel_id').change(function() { foo_2(); }); 

Funciona para mí si uso el setAttribute() nativo setAttribute() .

Además, recuerde que necesita cotizaciones alrededor del selector.

 $("#sel_id")[0].setAttribute("onchange", "foo_2()"); 

Recuerde también definir foo_2 en el espacio de nombres global, y no dentro de la función .ready() jQuery.

Use la función de cambio de JQuery.

 $ ('# sel_id'). change (function () {
   //tu codigo
 });

Aquí hay una manera de hacerlo usando solo javascript: