2011-06-03 6 views
11

EDIT:come controllare tutte le checkbox all'interno di un div in jQuery?

Grazie per le risposte ragazzi, ha un aspetto corretto e funziona su jsfiddle.net, ma nel mio codice fuochi avviso bene, ma non succede nulla per le caselle di controllo. :/

 $('#selectChb').click(function(){ 
     $(':checkbox').prop("checked", true); 
     alert("1"); 
    }); 

    $('#deselectChb').click(function(){ 
     $(':checkbox').prop("checked", false); 
     alert("2"); 
    }); 

...

<div id="chbDiv" class="ui-widget ui-widget-content ui-corner-all" > <br></br> 
    <table width="90%" border="0" align="center" cellpadding="5" cellspacing="0"> 
    <tr> 
    <td colspan="2">Following:</td> 
    <td>&nbsp;</td> 
    </tr> 
    <tr> 
    <td width="25" align="left"><input type="checkbox" id="check1" /><label for="check1">&nbsp;</label></td> 
    <td width="45" align="center"><img src="face_01.jpg" width="32" height="32"></td> 
    <td>Andrew Lloyd Webber</td> 
    </tr> 
     <tr> 
    <td width="25" align="left"><input type="checkbox" id="check2" /><label for="check2">&nbsp;</label></td> 
    <td width="25" align="center"><img src="face_02.jpg" width="32" height="32"></td> 
    <td>Richard Branson</td> 
    </tr> 
     <tr> 
    <td width="25" align="left"><input type="checkbox" id="check3" /><label for="check3">&nbsp;</label></td> 
    <td width="25" align="center"><img src="face_03.jpg" width="32" height="32"></td> 
    <td>Dmitry Medvedev</td> 
    </tr> 
</table> 
    <br> 
    <table width="90%" border="0" align="center" cellpadding="5" cellspacing="0"> 
    <tr> 
     <td><a href="#" id="selectChb" class="ui-state-default ui-corner-all"><span class="ui-icon ui-icon-check"></span>Select All</a>&nbsp; 
     <a href="#" id="deselectChb" class="ui-state-default ui-corner-all"><span class="ui-icon ui-icon-close"></span>Deselect All</a></td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
    </tr> 
    </table> 
<br> 

</div> 
    <br> 
    <div class="ui-widget ui-widget-content ui-corner-all"> 
+0

In che browser state eseguendo il test e quale versione di jQuery? –

+0

FireFox, ultima versione di jQuery, 1.6.1 – Roger

risposta

3

Prova scorrendo ogni oggetti trovati

$ ('# selectChb') clicca (function() {

alert("c!"); 

    $('#chbDiv').find(':checkbox').each(function(){ 

      $(this).attr('checked', !checkbox.attr('checked')); 

    }); 
}); 
.
+0

Si potrebbe voler fare riferimento che questo è pre 1.6. Post 1.6 dovrebbe usare 'prop();' invece. –

1

Questo codice attiverà le caselle di controllo. deselezionare è una classe data a un href.

$('.uncheck').bind('click', function(e) { 

    $(':checkbox').prop('checked', ($(':checkbox').prop('checked')) ? false : true); 

    e.preventDefault(); 

}); 
+0

grazie per la risposta, ma un po 'stranamente non funziona. vedi modifica sopra. – Roger

10

Effettuate la seguente

Live Demo

$('#selectChb').click(function(){ 
    $(':checkbox').prop("checked", true); 
}); 
+0

grazie per la risposta, ma un po 'stranamente non funziona. vedi modifica sopra. – Roger

21

Questa è una soluzione definitiva derivata che trova tutte le caselle all'interno di un DIV e controlli o deselezionata secondo un'altra singola casella di fuori della DIV che dice check/deseleziona

function checkCheckboxes(id, pID){ 

    $('#'+pID).find(':checkbox').each(function(){ 

     jQuery(this).attr('checked', $('#' + id).is(':checked')); 

    });  

} 

Uso:

<label>check/uncheck 
<input type="checkbox" id="checkall" value="1" 
onclick="checkCheckboxes(this.id, 'mycheckboxesdiv');" > 
</label> 

<div id="mycheckboxesdiv"> 
<input type="checkbox" value="test1" name="test"> 
<input type="checkbox" value="test2" name="anothertest"> 
<input type="checkbox" value="test3" name="tests[]"> 
<input type="checkbox" value="test1" name="tests[]"> 
</div> 

vantaggio è che si può utilizzare set di casella di controllo indipendenti e selezionare/deselezionare tutti indipendenti da altri set. È semplice e non è necessario lavorare con id o classi di ogni checkbox.

+2

Non riesco a farlo funzionare dopo la prima volta; i clic ripetuti della casella "checkall" non riescono a selezionare tutto: | – Adam

4

Prova questo codice

$("#Div_ID").find('input[type=checkbox]').each(function() { 
      // some staff 
      this.checked = true; 
     }); 
-1

provare a sostituire

 $(':checkbox').prop("checked", true); 

con

 $(':checkbox').attr("checked", true); 

prop non è supportata in alcune versioni di browser

0

Provate a commutare le caselle di controllo

var bool = false; 
    $('#selectAll').click(function(e){ 
    $('.users-list :checkbox').prop("checked", bool); 
    bool = !bool; 
}); 
1

non era in grado di commentare Latis risposta a causa di problemi di reputazione.

Genere di molto tardi, ma questo ha lavorato per me (tutti i crediti a Latis)

function checkCheckboxes(id, pID){ 
     $('#'+pID).find(':checkbox').each(function(){ 
      $(this).prop('checked', $('#' + id).is(':checked')); 
     });  
    } 

Fondamentalmente sostituiti attr con il puntello.

+0

"Non è stato possibile commentare la risposta latis a causa di problemi di reputazione". Se stai solo cercando di fare un commento, per favore non pubblicarlo come risposta, vedi http://meta.stackexchange.com/a/214174/189840. –

1

Ho una tabella (pseudo) contenente righe di checkbox che volevo poter selezionare/deselezionare con un solo clic.

Per ottenere ciò, ho assegnato gli ID alle rispettive righe (con php durante un ciclo) e ho terminato ogni riga con un'altra casella di controllo che ho assegnato alla classe "toggle" e il valore uguale all'ID della riga/div enclosure .

Come così:

<div class="table"> 
    <div class="row" id="rowId"> 
    <span class="td"><input type="checkbox" name="cb1"></span> 
    <span class="td"><input type="checkbox" name="cb2"></span> 
    <span class="td"><input type="checkbox" name="cbn"></span> 
    <span class="td"><input type="checkbox" class="toggle" value="rowId"></span> 
    </div> 
... 
</div> 

Poi ho creato il seguente script al fuoco quando questa casella di controllo viene cliccato:

$(".toggle").click(function(){ 
    var id = this.value;   
    if ($(this).attr("checked")) { 
     $(this).attr("checked", false);   
     $('#' + id).find(':checkbox').prop("checked", false); 
    } else { 
     $(this).attr("checked", true); 
     $('#' + id).find(':checkbox').prop("checked", true);    
    }   
}); 

Spero che questo aiuti.

MODIFICA: rimosso globale da script e comportamento di verifica ottimizzato.

Problemi correlati