2012-06-27 22 views
9

Aquí es una visión básica de lo que mi html se ve así:jQuery evento se unen clic para casillas de verificación

<form> 
    <div id="part1"> 
    // some html form elements including checkboxes 
    </div> 
    <div id="part2"> 
    // more html code with more checkboxes 
    </div> 
    <div id=part2"> 
    // data table with numerous checkboxes built dynamically 
    </div 
</form> 

Lo que hay que hacer es obligar a la evento .click() a las casillas de verificación en la parte 1, 2 y 3 por separado. Intenté esto $('#part1:checkbox').click(...) pero eso no funcionó. Si uso $("form :checkbox").click(...), el mismo evento de clic está vinculado a todas las casillas de verificación y no a un solo conjunto. ¿Cómo los separaría?

Respuesta

17

Estás casi allí. Sólo se necesita un espacio para separar el selector descendiente:

$('#part1 :checkbox').click(function(){ 
    // code goes here 
}); 

para aumentar el rendimiento, puede que quiera usar esto:

$('#part1 input[type=checkbox]').click(function(){ 
    // code goes here 
}); 
+0

uf .. la diferencia hace que un espacio mahalos – iJared

+0

¿cómo de entrada con [Tipo = casilla] mejora en el rendimiento? – iJared

+1

@Jared - 'input [type = checkbox]' es un selector de CSS válido. Cuando sea posible, jQuery pasará el selector a ['querySelectorAll'] (https://developer.mozilla.org/en/DOM/Document.querySelectorAll), que es mucho más eficiente que la implementación de jQuery de': checkbox'. –

1

O le das el mismo nombre de clase para todas las casillas de verificación y le das la identificación de div correspondiente para la casilla también, para que pueda usar el siguiente código,

<input type="checkbox" class="checkall" id="part1">Part 1 

y su secuencia de comandos es la siguiente.

$('.checkall').click(function() { 
if (this.checked == false) { 
$("." + $(this).attr("id")).hide(); 
} 
}); 
0

tuve un problema similar, y esta página StackOverflow es la primera respuesta que me topé, pero no era realmente satisfecho con ella. Encontré este artículo https://www.kevinleary.net/jquery-checkbox-checked/ con una mejor solución.

$('input[name="subscribe"]').on('click', function(){ 
    if ($(this).is(':checked')) { 
     $('input[name="email"]').show(); 
    } 
    else { 
     $('input[name="email"]').hide(); 
    } 
}); 
Cuestiones relacionadas