Tengo una pregunta rápida de jQuery:
Tengo el siguiente tipo de tabla:
<table id="my_table"> <tr> <td><input type="checkbox" value="24"></td> <td> Click Here To Check The Box </td> <td> Or Click Here </td> </tr> </table>Y en jQuery, intento seleccionar la casilla de verificación correspondiente en esa fila en la que se hizo clic.
$("#my_table tr").click(function(e) { $(this).closest(":checkbox").attr("checked", checked"); });Pero lo anterior no está funcionando. ¿Alguna idea rápida sobre cómo seleccionar la casilla de verificación en la fila en la que se hizo clic? ¡Gracias!
EDITAR: LA MEJOR SOLUCIÓN EN LA PARTE INFERIOR
Suponiendo que solo hay una casilla de verificación, adjuntaría el evento a td en lugar de tr :
$('#my_table td').click(function(e){ $(this).parent().find('input:checkbox:first').attr('checked', 'checked'); });Si desea poder desmarcar la casilla de verificación también...
$('#my_table td').click(function(e) { var $tc = $(this).parent().find('input:checkbox:first'), tv = $tc.attr('checked'); $tc.attr('checked', !tv); });Esta función también debe aplicarse a la casilla de verificación para anular el comportamiento predeterminado.
EDITAR: la solución es el método más razonable para cancelar la funcionalidad si el objetivo es una entrada: http://jsfiddle.net/EXVYU/5/
var cbcfn = function(e) { if (e.target.tagName.toUpperCase() != "INPUT") { var $tc = $(this).parent().find('input:checkbox:first'), tv = $tc.attr('checked'); $tc.attr('checked', !tv); } }; $('#my_table td').live('click', cbcfn);El método jQuery más cercano () encuentra el padre más cercano.
Si realmente desea buscar elementos secundarios, puede intentar lo siguiente:
$("#my_table tr").click(function(e) { $(":checkbox:eq(0)", this).attr("checked", "checked"); });básicamente está buscando la primera casilla de verificación que se encuentra en la fila de la tabla
alguna referencia
......
$("#my_table tr").click(function(e) { state= $(this).find(":checkbox:eq(0)").attr("checked"); if (state==true){ // WITH TOGGLE $(this).find(":checkbox:eq(0)").removeAttr("checked"); }else { $(this).find(":checkbox:eq(0)").attr("checked", "checked"); } });Hago un script simple para marcar la primera casilla de verificación en tr específico. sobre alternar, solo lo hago para probar antes de publicar esta respuesta.