2011-07-04 17 views
8

¿Cómo puedo ejecutar una función en el cambio de casilla de verificación?Mire para el cambio de la entrada [type = "checkbox"]

Estoy tratando de escribir una pequeña casilla de verificación reemplazando la función base en eso, pero estoy haciendo algo mal.

Código:

(function($) { 
    $.fn.checking = function() { 
     if ($('.checbox').prop('checked', false) === true) { 
      $('.new-checkbox').prop('id', 'unchecked'); 
     } else { 
      $('.new-checkbox').prop('id', 'checked'); 
     } 
    }; 
})(jQuery); 


$(document).ready(function() { 

    $('.checkbox').wrap('<div class="checkbox-wrapper"></div>'); 
    $('.checkbox-wrapper').append('<p class="new-checkbox">Blue = Checked, Red = Unchecked</p>'); 
    $('.checkbox').checking(); 
    $('.checbox').bind('change', function() { 
     $(this).checking(); 

    }); 

}); 

campo de juego: LIVE DEMO

+0

Quit etiquetado de títulos por favor. Ya tenemos etiquetas. –

Respuesta

9

Tiene algunos errores tipográficos y errores en el script.

if($('.checbox').prop('checked', false) === true) 
//  ^     ^^^^^^^^^^^^^^^^^ 

debería haber

if(this.prop('checked')) 

if($('.checkbox').prop('checked')) funcionaría también, por supuesto, pero ¿por qué seleccione el elemento de nuevo, si ya se ha hecho un plugin y el elemento está disponible a través de this?

Y

$('.checbox').bind('change', function(){ 
// ^

debería ser

$('.checkbox').bind('change', function(){ 
// ^

demostración de trabajo: http://jsfiddle.net/fkling/yGBAK/40/

Dicho esto, es mejor (más lógico) para añadir y eliminar una clase de cambiar el ID de el elemento.

+0

¡Estaba a punto de buscar un error en la declaración! Gracias Félix. – Iladarsda

14

¿Es esto lo que quieres? Tengo la impresión de que estás complicando demasiado las cosas.

$('input[type="checkbox"]').change(function() { 
    alert ("The element with id " + this.id + " changed."); 
}); 
+2

'input: checkbox' selector va a estar bien – jAndy

+2

@jAndy: Copiar/pegar le irá bien también. :) – Jon

+0

Sí. De hecho, lo he intentado antes, pero no funcionó.Sé que hay un problema con la instrucción if/else no .change(); ¡Gracias! – Iladarsda

0

En el ejemplo, el selector utiliza checbox, debe ser ".checkbox"

he modificado su ejemplo para que funcione: http://jsfiddle.net/yGBAK/41/

Cambié los identificadores para los elementos.

6
$('.checkbox').change(function(){ 
    alert('changed'); 
}) 

Utilicé la clase que colocó en la casilla de verificación (.checkbox) para esto. Detecta un cambio en el estado de la casilla de verificación (esto también funciona con otras entradas)

El ejemplo que incluí las alertas 'cambió' en la casilla de verificación se hace clic o no.

Si desea saber si se comprueba o no cada vez que a continuación:

$('.checkbox').change(function(){ 
    if($(this).is(':checked')){ 
     alert('checked'); 
    } else { 
     alert('not checked'); 
    } 
}); 
1

Prueba esto:

$('input[type=checkbox]').change(function() { 
    alert("I'm changed!"); 
}); 

O

$('input[type=checkbox]').change(function() { 
    if ($(this).is(':checked')) { 
     alert('I\'\m --> checked'); 
    } else { 
     alert('I\'\m --> unchecked'); 
    } 
}); 
Cuestiones relacionadas