Actualización: Acabo de ver su comentario en la respuesta de Pavan sobre el deseo de utilizar elementos que no sean de etiqueta como etiquetas, por ejemplo, elementos de tramo. Mi primera respuesta es ¿por qué? Pero si realmente lo desea, puede hacerlo fácilmente sin tener que escribir muchos códigos y códigos de identificación de elementos en su JavaScript (que parece ser la ruta en la que se encuentra actualmente con su código actual).
Utilice un atributo data
en el elemento que desea utilizar como etiqueta de pseudo, de la siguiente manera:
<span data-labelfor="name">Name</span>
<input type="checkbox" id="name">
y luego se puede configurar el controlador de clic con un poco de jQuery genérica para seleccionar todos los elementos con ese atributo :
$(document).ready(function() {
$("[data-labelfor]").click(function() {
$('#' + $(this).attr("data-labelfor")).prop('checked',
function(i, oldVal) { return !oldVal; });
});
});
demostración de trabajo que muestra que una función corta aplicar el comportamiento de un lapso de una etiqueta y un div: http://jsfiddle.net/TFD72/
Respuesta original:
Como ya se ha explicado Pavan, usted puede hacer esto de forma automática mediante el atributo for
en su etiqueta, pero en cuanto a por qué su código no funcionó:
Su llamada a la CheckCheckBox()
función se pasa dos objetos jQuery como parámetros de la siguiente manera:
CheckCheckBox($('lblAssociateWithCheckBox'), $('Checkbox1'));
Pero la función es tratar a esos parámetros, como si fueran cadenas que sostienen los identificadores de los elementos que desea procesar.Así que si desea mantener su función que es simplemente cambiar la forma de la llama para pasar el tipo adecuado de parámetro:
CheckCheckBox('lblAssociateWithCheckBox', 'Checkbox1');
Eso se debe corregir el error que usted cita.
Sin embargo, su función como es configurará la casilla de verificación "marcada" en cada clic de la etiqueta, incluso si ya estaba marcada. Si usted quiere que alternar entre (es decir, un comportamiento normal) marcado y sin marcar se puede hacer algo como esto:
$('#' + Checkbox1).prop('checked', function(i, oldVal) { return !oldVal; });
(. Pero, de nuevo, sólo lo hacen en el formato HTML mediante el atributo for
)
Como dijo Pavan, no necesita JS para esto, es un método nativo de HTML. El atributo 'para' de la etiqueta corresponde al 'id' de la casilla de verificación. –
@Pavan Label no siempre es 'label'. Puede ser' span'.I check 'span' no toma' for attribute'. Realizo esta tarea varias veces, por lo que quiero una función que llame a cualquier parte. –