Ciao, in pratica è lo stesso di prima:
Codice PHP:
<html>
<head>
<script src="http://code.jquery.com/jquery-1.4.3.min.js"></script>
<script>
$(document).ready(function()
{
$("#cb1").click(function() // evento causato da click sulla prima checkbox
{
var cb1 = $(this);
var disabled = null;
if (cb1.is(":checked")) // se la checkbox è abilitata...
{
disabled = "disabled"; // ...indico che le altre devono essere disabilitate
}
else // altrimenti...
{
disabled = ""; // ...indico che devono essere abilitate
} // al termine di questa if, ho che se la checkbox 1 è checkata, disabilito tutti
// con il foreach che segue, altrimenti li abilito tutti
// per ogni input con id che comincia con 'cb'
// che rispettano quindi il pattern ^=cb
// [url]http://api.jquery.com/category/selectors/[/url]
$.each($("input[id^=\"cb\"]"), function()
{
// se l'id dell'input attuale, dell'insieme su cui sto iterando,
// è diverso da quello della checkbox 1 (quella che disabilitat tutti)...
if($(this).attr("id") != cb1.attr("id"))
{
// disabilito/abilito questo input, in accordo con l'if di prima
$(this).attr("disabled", disabled);
if(disabled == "disabled") // se ho disabilitato l'input...
{
// ...allora prendo il parent e gli dico che il colore del testo sarà rosso
$(this).parent("div").css("color", "red");
}
else // se ho abilitato tutti l'input...
{
// ...allora prendo il parent e gli dico che il colore del testo sarà nero
$(this).parent("div").css("color", "black");
}
}
});
});
$("input[id^=\"cb\"]").change(function()
{
var anyChecked = false;
if($(this).attr("id") != "cb1")
{
if($(this).is(":checked"))
{
$("#cb1").attr("disabled", "disabled");
$("#cb1").parent("div").css("color", "red");
return;
}
$.each($("input[id^=\"cb\"]"), function()
{
if($(this).attr("id") != "cb1" && $(this).is(":checked"))
{
anyChecked = true;
return;
}
});
if(!anyChecked)
{
$("#cb1").attr("disabled", "");
$("#cb1").parent("div").css("color", "black");
}
else
{
$("#cb1").attr("disabled", "disabled");
$("#cb1").parent("div").css("color", "red");
}
}
});
});
</script>
</head>
<body>
<div>
<input type="checkbox" id="cb1"/>
primo
</div>
<div>
<input type="checkbox" id="cb2"/>
secondo
</div>
<div>
<input type="checkbox" id="cb3"/>
terzo
</div>
<div>
<input type="checkbox" id="cb4"/>
quarto
</div>
<div>
<input type="checkbox" id="cb5"/>
quinto
</div>
</body>
</html>
Nota che non ho avuto bisogno che i div avessero un id.