Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Show/Hide с checkbox (https://javascript.ru/forum/events/12461-show-hide-s-checkbox.html)

masjka 18.10.2010 20:03

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, время: 06:24.