Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.04.2013, 16:45
Новичок на форуме
Отправить личное сообщение для danil-n2 Посмотреть профиль Найти все сообщения от danil-n2
 
Регистрация: 07.11.2012
Сообщений: 3

Посоветуйте новику, что я делаю не так
Помогите пожалуйста со скриптом.
Есть меню
<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.
Посоветуйте, что я делаю не так?
Ответить с цитированием
  #2 (permalink)  
Старый 26.04.2013, 16:56
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Отформатируйте ваш код, не понятно же ничего.
Ответить с цитированием
  #3 (permalink)  
Старый 26.04.2013, 17:11
Новичок на форуме
Отправить личное сообщение для danil-n2 Посмотреть профиль Найти все сообщения от danil-n2
 
Регистрация: 07.11.2012
Сообщений: 3

Помогите пожалуйста со скриптом.
Есть меню
<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;
	
	});
Ответить с цитированием
  #4 (permalink)  
Старый 26.04.2013, 17:39
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

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


При клике на ли ищем внутри ли на который кликнули первый ул и скрываем/раскрываем его.
Ответить с цитированием
  #5 (permalink)  
Старый 26.04.2013, 18:09
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

<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>
Ответить с цитированием
  #6 (permalink)  
Старый 26.04.2013, 21:22
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,122

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


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Странно, что не так? Mukhtar Events/DOM/Window 6 08.03.2013 05:24
Что я делаю не так? usbmaster Общие вопросы Javascript 2 23.11.2012 11:53
Отправить данные , посмотрите что не так Sadist_dead AJAX и COMET 0 26.11.2011 15:21
Подскажите что я не так сделал Sheport-NET Events/DOM/Window 3 27.04.2009 11:00
Что не так? giGnet Общие вопросы Javascript 8 23.06.2008 22:51