Pregunta

Si tengo botones de opción:

<input id="y0" type="radio" name="myRadioBtns" value="a" checked> <label for="y0"></label>
<input id="y1" type="radio" name="myRadioBtns" value="b">  <label for="y1"></label>
<input id="y2" type="radio" name="myRadioBtns" value="c">  <label for="y2"></label>

Es posible que los botones de opción ya hayan vinculado un controlador de eventos de cambio como el siguiente:

$('input[name='myRadioBtns']').change(function() {
  //EVENT HANDLER
});

Necesito comprobar si los botones de opción ya se han vinculado con un controlador de eventos de "cambio" o no.

Mi pregunta es ¿Cómo comprobar si los botones de opción ya se han vinculado con un controlador de eventos de "cambio" ?

¿Fue útil?

Solución

Si desea probar si un evento de cambio ya se ha vinculado antes de vincular otro, use esto:

var $el = $('input[name='myRadioBtns']');

if( ! ($el.data('events') && $el.data('events').change) ) {

   $el.change(function() {
       //EVENT HANDLER
   });
}

Otros consejos

Puede obtener eventos vinculados con:

.data('events')

Además, puede vincular varios eventos de cambio de espacio de nombres que cada uno hace cosas diferentes.Por ejemplo, si estuviera escribiendo un complemento de jQuery que necesita vincular eventos a elementos, pero no eliminar ningún evento existente que ya esté configurado en la página.

Siempre que estoy escribiendo un complemento de jQuery, me aseguro de que todos los eventos estén vinculados de esta manera:

    $(":checkbox").on("change.myNamespace", function(){
        //Do Stuff - this won't replace existing change events on checkboxes!
    });
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top