Show/Hide с checkbox
Ув.
Фактически не владею JavaScript , но кровь из носа надо решить задачу. Есть список названий из базы, в каждом списке имеется ещё один - подчиненный список, которые должен открываться при нажатии на главный элемент каждого списка и закрываться тоже он должен при нажатии на тот же элемент (свернуть - развернуть). Задача улсажняется, у каждого элемента списка и перента и чаилда есть чекбокс, для следующего селекта из базы. Есть код, но этот код закрывает (или сворачивает) чаилд список при клике по чекбоксу. Метод тыка исчерпал себя, прошу помощи :victory: Надо, сварачивать чаилд список только по факту клика по парент элемент, а не по факту клика по чекбоксу. джаваскрипт
<script type="text/javascript">
$(function(){
$(".tv_channels > li > ul").each(function(){$(this).hide();});
$(".tv_channels > li").find("label").click(function(){
$(this).parent().find("ul").each(function(){
if ( $(this).is(':hidden') ) {
$(this).show("fast");
} else {
$(this).hide("fast");
}
});
});
$(".tv_channels > li").find("input[type='checkbox']").change(function(){
if ($(this).is(':checked')) {
$(this).parent().children("ul").find("input[type='checkbox']").each(function(){$(this).attr("checked","checked")});
} else {
$(this).parent().children("ul").find("input[type='checkbox']").each(function(){$(this).attr("checked",false)});
}
$("#tv_from").submit();
});
});
</script>
чекбоксы:
<form method="post" action="" id="tv_from">
<ul id="tv_channels_1" class="tv_channels">
<?php
for($i=0; $i < count($categories); $i+=2)
{
$category = $categories[$i];
echo '<li>';
$checked = isset($_POST['tv_cat']) && isset($_POST['tv_cat'][$category['key']]) ? ' checked="checked"' : '';
$checkbox = '<input type="checkbox" name="tv_cat['.$category['key'].']" '.$checked.'>';
$label = '<label onclick="tv_channels();">'.$category['title'].'</label>';
$channels = '<ul>';
$ch = 0;
foreach($category['channels'] as $channel)
{
$channels .= '<li>';
$checked = isset($_POST['tv_chn']) && isset($_POST['tv_chn'][$category['key']][$channel[0]]) ? ' checked="checked"' : '';
$channels .= '<input type="checkbox" id="tv_chn_'.$i.'_'.$ch.'" name="tv_chn['.$category['key'].']['.$channel[0].']" '.$checked.'>';
$channels .= ' <label for="tv_chn_'.$i.'_'.$ch.'">'.$channel[1].'</label>';
$channels .= '</li>';
$ch++;
}
$channels .= '</ul>';
echo $checkbox.' '.$label.$channels;
echo '</li>';
}
?>
</ul>
цсс, помойму он тоже тут в тему
#tv_channels_1 {float:left; margin: 0 0 0 40px; overflow:hidden;}
#tv_channels_2 {float:right; margin: 0 40px 0 0; overflow:hidden;}
.tv_channels {width:380px; overflow:hidden;}
.tv_channels li {padding: 2px;}
.tv_channels ul {padding: 3px 0 10px 10px;}
Буду благодарна любой помощи. |
| Часовой пояс GMT +3, время: 03:01. |