Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Внутристраничное меню jQuery (https://javascript.ru/forum/jquery/54882-vnutristranichnoe-menyu-jquery.html)

nonkalol 04.04.2015 20:53

Внутристраничное меню jQuery
 
Здравствуйте господа, столкнулся с проблемой на которую не представляю решения :help:

Постараюсь понятно изложить:

Есть меню

<menu id="nav4">
			<li id = "ksik"><a title="Компьютерные системы и комплексы">КCИК</a>
			<li id = "ks"><a title="Компьютерные сети">КС</a>
			<li id = "pks"><a title="Программирование в компьютерных системах">ПКС</a>
			<li id = "pi"><a title="Прикладная информатика">ПИ</a>
			<li id = "eby"><a title="Экономика и бухгалтерский учет">ЭБУ</a>
			<li id = "atpp"><a title="Автоматизация технологических процессов и производств">АТПП</a>
			<li id = "mts"><a title="Многоканальные телекоммуникационные системы">МТС</a>
			<li id = "sssk"><a title="Сети связи и системы коммутации">СССК</a>
			<li id = "ibts"><a title="Информационная безопасность телекоммуникационных систем">ИБТС</a>			
		</menu>


Это горизантальное меню, и переход происходит внутри страницы функцией slideDown. Оно выдвигает определенный div блок, а содержимое его берется из файла rate.php, переменная в этом блоке береться ajax post запросом по клику.

Проблема в том, что сейчас оно работает достаточно глупо, т.е. по клику на объект меню происходит слайддаун, а при клике на другой объект меню происходит слайдап. Так быть не должно. Т.е. по клику на другой объект меню предыдущее должно слайдится вверх, а новое выдвигаться с новыми данными. А еще хотелось бы закрепить по клику класс, чтоб видно было какое именно сейчас активно. Вот код jQuery

$(document).ready(function() {
	$("#div5").hide(); 
	var flagMenu=false;
	var men = undefined;
	$("#ksik").click(function() {				
		$("#ks a, #pks a, #pi a, #eby a, #atpp a, #mts a, #sssk a, #ibts a").removeClass('act');
	$("#ksik a").toggleClass('act');

		var men = "po";	
		
			if(flagMenu==true) {
				$("#div5").slideUp(500);
				flagMenu=!flagMenu;
			} else {
				$("#div5").slideDown(500);
				flagMenu=!flagMenu;
			}
				
				$.post("/scripts/rate.php", {men: men},
					function(html) {
					$("#div5").empty();
					$("#div5").append(html);
					}				
				);		
	});	
});


Это код одной из кнопок, на каждой стоит такой-же.

Это очень нерационально, выполняется лоб в лоб, и не работает правильно к тому-же.

Очень прошу помощи у вас, больше даже и нет к кому обратиться

Спасибо!

рони 04.04.2015 21:12

nonkalol,
тут будет открывашка 209 если остальные 208 вам не подойдут :cray:

nonkalol 04.04.2015 21:18

не понял шутку(((

рони 04.04.2015 22:06

nonkalol,
это не шутка
http://javascript.ru/forum/jquery/54...tml#post362759

nonkalol 04.04.2015 22:15

рони,
спасибо, сейчас попробую разобраться

рони 04.04.2015 22:34

открывашка 209 выделение пункта меню и запрос на сервер
 
nonkalol,
<!DOCTYPE html>

<html>

<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <style type="text/css">
        .active-menu-item {
            background: #FFE4B5;
        }

        a {
            cursor: pointer;
        }
    </style>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js">
    </script>
    <script>
        $(function() {

            var $but = $("#nav4 > li a"),
                $blocks = $("#div5");
            $blocks.hide();
            $img = $("img", $blocks); // сервер имитация
            $img.load(function() { // $.post   callback
                $blocks.slideDown()
            });

            $but.each(function(i, elem) {
                var $el = $(elem),
                    url = $el.data('url');
                $el.click(function(event) {
                    event.preventDefault();
                    $but.not($el).removeClass("active-menu-item");
                    $el.addClass("active-menu-item");
                    $blocks.slideUp(function() {
        $img[0].src = url;
});                    //$blocks.load(url,function() { $blocks.slideDown()});  что  должно быть на самом деле
                })
            });
        });
    </script>
</head>

<body>
    <ul id="nav4">
        <li id="ksik">
            <a data-url="http://www.forum-globalteam.ru/wp-content/uploads/motivator-12830.jpg" title="Компьютерные системы и комплексы">КCИК</a>
        </li>

        <li id="ks">
            <a data-url="http://www.moirebenok.ua/gfx/00/00/8b/d3/image-08twf7d_jpg/thumb_800x600_10_w.jpg" title="Компьютерные сети">КС</a>
        </li>

        <li id="pks">
            <a data-url="http://www.leben-und-erziehen.de/wp-content/uploads/2013/04/baby_quiz_fragen_neugierig_iSt_000015776994.jpg" title="Программирование в компьютерных системах">ПКС</a>
        </li>

        <li id="pi">
            <a data-url="http://womem.org/infusions/al_genmem/includes/gen_image.php?image=307&gen_type=2&text1=&text2=" title="Прикладная информатика">ПИ</a>
        </li>

        <li id="eby">
            <a data-url="http://content.foto.mail.ru/mail/sharunova60/_blogs/i-247.jpg" title="Экономика и бухгалтерский учет">ЭБУ</a>
        </li>

        <li id="atpp">
            <a data-url="http://mindcamp.org/images-programs/orane_fun.jpg" title="Автоматизация технологических процессов и производств">
      АТПП</a>
        </li>

        <li id="mts">
            <a data-url="http://www.blissstudio.ru/thumb/732/487/uploads/photos/213~jpg" title="Многоканальные телекоммуникационные системы">МТС</a>
        </li>

        <li id="sssk">
            <a data-url="http://upload.wikimedia.org/wikipedia/commons/7/7f/Smile_is_universal.jpg" title="Сети связи и системы коммутации">СССК</a>
        </li>

        <li id="ibts">
            <a data-url="http://www.ahitravel.com/content/images/programs/CHINA13A/Foto_807883.jpg" title="Информационная безопасность телекоммуникационных систем">
      ИБТС</a>
        </li>
    </ul>

    <div class="" id="div5">
        <img src="" alt="">
    </div>
</body>

</html>

nonkalol 04.04.2015 22:56

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

Но если это проблематично, то и ладно, в любом случае огромное спасибо)

рони 04.04.2015 23:07

nonkalol,
строка 37 $blocks.slideUp( здесь ваш запрос на сервер);//изменено смотрите пост 6 снова


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