Показать сообщение отдельно
  #1 (permalink)  
Старый 18.10.2010, 20:03
Новичок на форуме
Отправить личное сообщение для masjka Посмотреть профиль Найти все сообщения от masjka
 
Регистрация: 18.10.2010
Сообщений: 1

Show/Hide с checkbox
Ув.

Фактически не владею JavaScript , но кровь из носа надо решить задачу.

Есть список названий из базы, в каждом списке имеется ещё один - подчиненный список, которые должен открываться при нажатии на главный элемент каждого списка и закрываться тоже он должен при нажатии на тот же элемент (свернуть - развернуть).

Задача улсажняется, у каждого элемента списка и перента и чаилда есть чекбокс, для следующего селекта из базы.

Есть код, но этот код закрывает (или сворачивает) чаилд список при клике по чекбоксу.

Метод тыка исчерпал себя, прошу помощи

Надо, сварачивать чаилд список только по факту клика по парент элемент, а не по факту клика по чекбоксу.

джаваскрипт
<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;}


Буду благодарна любой помощи.

Последний раз редактировалось masjka, 18.10.2010 в 20:21.
Ответить с цитированием