Aquí está mi código:
$("#product1 :checkbox").click(function(){ $(this) .closest('tr') // Find the parent row. .find(":input[type='text']") // Find text elements in that row. .attr('disabled',false).toggleClass('disabled') // Enable them. .end() // Go back to the row. .siblings() // Get its siblings .find(":input[type='text']") // Find text elements in those rows. .attr('disabled',true).removeClass('disabled'); // Disable them. }); ¿Cómo .attr('disabled',false); ?
Parece que no puedo encontrarlo en Google.
$('#el').prop('disabled', function(i, v) { return !v; }); El método .prop() acepta dos argumentos:
Entonces, en este caso, utilicé una función que me proporcionó el índice (i) y el valor actual (v), luego devolví el valor opuesto al actual, por lo que el estado de la propiedad se invierte.
¡ Supongo que para disabled la comparabilidad completa del navegador debe establecerse por el valor disabled o eliminarse!
Aquí hay un pequeño complemento que acabo de hacer:
(function($) { $.fn.toggleDisabled = function() { return this.each(function() { var $this = $(this); if ($this.attr('disabled')) $this.removeAttr('disabled'); else $this.attr('disabled', 'disabled'); }); }; })(jQuery); EDITAR: ¡se actualizó el enlace/código de ejemplo para mantener la encadenabilidad!
EDITAR 2:
Basado en el comentario de @lonesomeday, aquí hay una versión mejorada:
(function($) { $.fn.toggleDisabled = function(){ return this.each(function(){ this.disabled = !this.disabled; }); }; })(jQuery);
$('#casilla').click(función(){
$('#submit').attr('disabled', !$(this).attr('checked'));
});