Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Посоветуйте новику, что я делаю не так (https://javascript.ru/forum/misc/37605-posovetujjte-noviku-chto-ya-delayu-ne-tak.html)

danil-n2 26.04.2013 16:45

Посоветуйте новику, что я делаю не так
 
Помогите пожалуйста со скриптом.
Есть меню
<div id="sidebar">
<ul>
<li><a href=#>Категория</a></li>
<li><a href=#>Категория</a></li>
<li class=submenu><a href=#>Категория</a></li> <!--Если категория имеет подкатегорию, присваиваем класс submenu-->
<li class=submenu><a href=#>Категория</a>
<ul class=cat>
<li><a href=#>ПодКатегория</a></li>
<li><a href=#>ПодКатегория</a></li>
<li><a href=#>ПодКатегория</a></li>
</ul>
</li>
<li><a href=#>Ссылка</a></li>
</ul>
</div>
Категории и подкатегории. Мне нужно, что бы при загрузке страницы подкатегории были скрыты.
В css сделал так
#sidebar .submenu .cat
{
display:none;
},
А при клике на любую категорию имеющую подкатегорию нужно развернуть скрытый список.
в jquery сделал так
$(function () {
$('#sidebar ul .submenu').click(function()
{
var cl=$(this).find('ul').attr("class");
//console.log(cl);
if (cl=="cat")
{
$(this).find('.cat').slideDown('fast').removeClass ('cat').addClass('uncat');
}
else
{
$(this).find('.uncat').slideUp('fast').removeClass ('uncat').addClass('cut');
console.log(cl);
}
return false;

});
Проблема в том, что это скрипт отрабатывает правильно только два раза, когда открываю и когда закрываю подкатегорию.
Как ни странно, переменная cl получает каждый раз измененный класс, но почему то я все равно попадаю в условие else.
Посоветуйте, что я делаю не так?

tsigel 26.04.2013 16:56

Отформатируйте ваш код, не понятно же ничего.

danil-n2 26.04.2013 17:11

Помогите пожалуйста со скриптом.
Есть меню
<div id="sidebar">
    <ul>
        <li><a href=#>Категория</a></li> 
        <li><a href=#>Категория</a></li> 
        <li class=submenu><a href=#>Категория</a></li> <!--Если категория имеет подкатегорию, присваиваем класс submenu-->
			<li class=submenu><a href=#>Категория</a>
				<ul class=cat>
					<li><a href=#>ПодКатегория</a></li>
					<li><a href=#>ПодКатегория</a></li>
					<li><a href=#>ПодКатегория</a></li>
				</ul>
			</li>
		<li><a href=#>Ссылка</a></li>
	</ul>
</div>

Категории и подкатегории. Мне нужно, что бы при загрузке страницы подкатегории были скрыты.
В css сделал так
#sidebar .submenu .cat
{
display:none;
},
А при клике на любую категорию имеющую подкатегорию нужно развернуть скрытый список.
в jquery сделал так
$(function () {
	$('#sidebar ul .submenu').click(function()
	{
		var cl=$(this).find('ul').attr("class"); 
		//console.log(cl);
		 if (cl=="cat")
		 {
			$(this).find('.cat').slideDown('fast').removeClass('cat').addClass('uncat');
		 }
		 else 
		 {
			$(this).find('.uncat').slideUp('fast').removeClass('uncat').addClass('cut');
			console.log(cl);
		 }
		 return false;
	
	});

tsigel 26.04.2013 17:39

$('li').click(function () {
  $(this).find('ul').first().slideToggle();
});


При клике на ли ищем внутри ли на который кликнули первый ул и скрываем/раскрываем его.

tsigel 26.04.2013 18:09

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>

<div id="sidebar">
    <ul>
        <li><a href=#>Категория</a></li>
        <li><a href=#>Категория</a></li>
        <li><a href=#>Категория</a></li>
        <li><a href=#>Категория</a>
            <ul>
                <li><a href=#>ПодКатегория</a></li>
                <li><a href=#>ПодКатегория</a>
                    <ul>
                        <li><a href=#>ПодКатегория</a></li>
                        <li><a href=#>ПодКатегория</a></li>
                        <li><a href=#>ПодКатегория</a></li>
                    </ul>
                </li>
                <li><a href=#>ПодКатегория</a></li>
            </ul>
        </li>
        <li><a href=#>Ссылка</a></li>
    </ul>
</div>
<script>
    $('li').click(function (e) {
        $(this).find('ul').first().slideToggle();
        e.stopPropagation();
        return false;
    });   
</script>

ksa 26.04.2013 21:22

tsigel, по-мне так лучше использовать
http://jquery-docs.ru/Traversing/children/#expr
нежели find()...


Часовой пояс GMT +3, время: 14:16.