Arborescence de checkbox buggue dans un sens
Salut,
J'ai besoin d'avoir une arborescence de checkbox avec des groupe et sous groupe.
Dans mon cas, si je coche de haut en bas cela fonctionne; je m'explique :
Si je clique uniquement "boards", tous les ascendants sont cliqués.
Si je clique uniquement "quebec", tous les ascendants sont cliqués.
Si je clique uniquement "film", tous les ascendants sont cliqués.
En revanche c'est pas mal la pagaille si on veut faire le sens inverse (film, puis quebec, puis boards ...) ; ca ne donne pas un résultat très logique ...
Est ce que vous voyez ce qui pourrait clocher ? Merci.
Voici ma syntaxe :
Le html est :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
|
<li><input type="checkbox" name="boards" class="mainboard" id="cbo"/> Boards</li>
<ul>
<li><input type="checkbox" name="quebec" class="boards" id="cque"/> Quebec</li>
<ul>
<li><input type="checkbox" name="qc_film" class="main_cb" id="cqufi"/> Film</li>
<ul>
<li><input type="checkbox" name="film_qc_certificate_3"/> Certificate</li>
<li><input type="checkbox" name="film_qc_runing_time_3"/> Runing time</li>
<li><input type="checkbox" name="film_qc_rating_fr_3"/> Rating FR</li>
<li><input type="checkbox" name="film_qc_rating_en_3"/> Rating EN</li>
<li><input type="checkbox" name="film_qc_rating_bil_3"/> Rating BIL</li>
<li><input type="checkbox" name="film_qc_description_3"/> Description</li>
</ul>
<li><input type="checkbox" name="qc_trailer" class="main_cb" id="cqutr"/> Trailer</li>
<ul>
<li><input type="checkbox" name="trailer_qc_certificate_3"/> Certificate</li>
<li><input type="checkbox" name="trailer_qc_runing_time_3"/> Runing time</li>
<li><input type="checkbox" name="trailer_qc_rating_fr_3"/> Rating FR</li>
<li><input type="checkbox" name="trailer_qc_rating_en_3"/> Rating EN</li>
<li><input type="checkbox" name="trailer_qc_rating_bil_3"/> Rating BIL</li>
<li><input type="checkbox" name="trailer_qc_description_3"/> Description</li>
</ul>
</ul>
</ul>
<ul>
<li><input type="checkbox" name="ontario" class="boards" id="cont"/> Ontario</li>
<ul>
<li><input type="checkbox" name="on_film" class="main_cb" id="confi"/> Film</li>
<ul>
<li><input type="checkbox" name="film_on_certificate_3"/> Certificate</li>
<li><input type="checkbox" name="film_on_runing_time_3"/> Runing time</li>
<li><input type="checkbox" name="film_on_rating_fr_3"/> Rating FR</li>
<li><input type="checkbox" name="film_on_rating_en_3"/> Rating EN</li>
<li><input type="checkbox" name="film_on_rating_bil_3"/> Rating BIL</li>
<li><input type="checkbox" name="film_on_description_3"/> Description</li>
</ul>
<li><input type="checkbox" name="on_trailer" class="main_cb" id="contr"/> Trailer</li>
<ul>
<li><input type="checkbox" name="trailer_on_certificate_3"/> Certificate</li>
<li><input type="checkbox" name="trailer_on_runing_time_3"/> Runing time</li>
<li><input type="checkbox" name="trailer_on_rating_fr_3"/> Rating FR</li>
<li><input type="checkbox" name="trailer_on_rating_en_3"/> Rating EN</li>
<li><input type="checkbox" name="trailer_on_rating_bil_3"/> Rating BIL</li>
<li><input type="checkbox" name="trailer_on_description_3"/> Description</li>
</ul>
</ul>
</ul>
<ul>
<li><input type="checkbox" name="maritimes" class="boards" id="cmar"/> Maritimes</li>
<ul>
<li><input type="checkbox" name="mar_film" class="main_cb" id="cmarfi"/> Film</li>
<ul>
<li><input type="checkbox" name="film_mar_certificate_3"/> Certificate</li>
<li><input type="checkbox" name="film_mar_runing_time_3"/> Runing time</li>
<li><input type="checkbox" name="film_mar_rating_fr_3"/> Rating FR</li>
<li><input type="checkbox" name="film_mar_rating_en_3"/> Rating EN</li>
<li><input type="checkbox" name="film_mar_rating_bil_3"/> Rating BIL</li>
<li><input type="checkbox" name="film_mar_description_3"/> Description</li>
</ul>
<li><input type="checkbox" name="mar_trailer" class="main_cb" id="cmartr"/> Trailer</li>
<ul>
<li><input type="checkbox" name="trailer_mar_certificate_3"/> Certificate</li>
<li><input type="checkbox" name="trailer_mar_runing_time_3"/> Runing time</li>
<li><input type="checkbox" name="trailer_mar_rating_fr_3"/> Rating FR</li>
<li><input type="checkbox" name="trailer_mar_rating_en_3"/> Rating EN</li>
<li><input type="checkbox" name="trailer_mar_rating_bil_3"/> Rating BIL</li>
<li><input type="checkbox" name="trailer_mar_description_3"/> Description</li>
</ul>
</ul>
</ul>
<ul>
<li><input type="checkbox" name="manitoba" class="boards" id="cman"/> Manitoba</li>
<ul>
<li><input type="checkbox" name="man_film" class="main_cb" id="cmanfi"/> Film</li>
<ul>
<li><input type="checkbox" name="film_man_certificate_3"/> Certificate</li>
<li><input type="checkbox" name="film_man_runing_time_3"/> Runing time</li>
<li><input type="checkbox" name="film_man_rating_fr_3"/> Rating FR</li>
<li><input type="checkbox" name="film_man_rating_en_3"/> Rating EN</li>
<li><input type="checkbox" name="film_man_rating_bil_3"/> Rating BIL</li>
<li><input type="checkbox" name="film_man_description_3"/> Description</li>
</ul>
<li><input type="checkbox" name="man_trailer" class="main_cb" id="cmantr"/> Trailer</li>
<ul>
<li><input type="checkbox" name="trailer_man_certificate_3"/> Certificate</li>
<li><input type="checkbox" name="trailer_man_runing_time_3"/> Runing time</li>
<li><input type="checkbox" name="trailer_man_rating_fr_3"/> Rating FR</li>
<li><input type="checkbox" name="trailer_man_rating_en_3"/> Rating EN</li>
<li><input type="checkbox" name="trailer_man_rating_bil_3"/> Rating BIL</li>
<li><input type="checkbox" name="trailer_man_description_3"/> Description</li>
</ul>
</ul>
</ul>
<ul>
<li><input type="checkbox" name="british_columbia" class="boards" id="cbr"/> British Columbia</li>
<ul>
<li><input type="checkbox" name="br_film" class="main_cb" id="cbrfi"/> Film</li>
<ul>
<li><input type="checkbox" name="film_br_certificate_3"/> Certificate</li>
<li><input type="checkbox" name="film_br_runing_time_3"/> Runing time</li>
<li><input type="checkbox" name="film_br_rating_fr_3"/> Rating FR</li>
<li><input type="checkbox" name="film_br_rating_en_3"/> Rating EN</li>
<li><input type="checkbox" name="film_br_rating_bil_3"/> Rating BIL</li>
<li><input type="checkbox" name="film_br_description_3"/> Description</li>
</ul>
<li><input type="checkbox" name="br_trailer" class="main_cb" id="cbrtr"/> Trailer</li>
<ul>
<li><input type="checkbox" name="trailer_br_certificate_3"/> Certificate</li>
<li><input type="checkbox" name="trailer_br_runing_time_3"/> Runing time</li>
<li><input type="checkbox" name="trailer_br_rating_fr_3"/> Rating FR</li>
<li><input type="checkbox" name="trailer_br_rating_en_3"/> Rating EN</li>
<li><input type="checkbox" name="trailer_br_rating_bil_3"/> Rating BIL</li>
<li><input type="checkbox" name="trailer_br_description_3"/> Description</li>
</ul>
</ul>
</ul> |
Et le Javascript est :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
$(".main_cb").click(function() {
var id = $(this).attr("id");
if ( $("#"+id).attr("checked") != '' )
$("#"+id).parent("li").next("ul").children("li").children("input[type='checkbox']").attr("checked","checked");
else
$("#"+id).parent("li").next("ul").children("li").children("input[type='checkbox']").attr("checked",false);
});
$(".mainboard").click( function() {
if ( $(this).attr("checked") != '')
$(".boards").click().click().attr("checked","checked");
else
$(".boards").click().click().attr("checked",false);
});
$(".boards").bind('click', function() {
if ( $(this).attr("checked") != '')
$(this).parent("li").next("ul").children("li").children("input[type='checkbox']").click().click().attr("checked","checked");
else
$(this).parent("li").next("ul").children("li").children("input[type='checkbox']").click().click().attr("checked",false);
}); |