Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Помогите пожалуйста исправить меню (https://javascript.ru/forum/dom-window/2003-pomogite-pozhalujjsta-ispravit-menyu.html)

Виталий С 18.10.2008 00:16

Помогите пожалуйста исправить меню
 
Здравствуйте. извините уж, но в javascript я ноль. не ругайте, если я тут не к месту на форуме, вопросы элементарные задаю.. Есть желание восполнить пробел, чувствую, что у технологии широкие горизонты..
Собственно вопрос: что дописать в menu.js чтобы он четко работал, т.е. чтобы не разворачивалось больше одной ссылки, и ссылка закрывалась обратно. собственно меню находится в диве menu на странице prazdniksaratov.ru

Код:

var prevBlock = null;

$(window).load(function() {
    $("#menu a").each(function() {

        var slidedBlock = $(this).next("div");
       
        $(this).click(function() {
            if (null !== prevBlock && prevBlock !== slidedBlock)
            {
                $(prevBlock).slideToggle("slow");
            }
            $(slidedBlock).slideToggle("slow");
            prevBlock = slidedBlock;
            return false;
        });
    });
});

сам скрипт - menu.js, и там что-то через "jquery-1.2.5.min.js" загружается, который вроде бы делает смену фоток. ей богу, я понятия не имею как они взаимодействуют.. и кстати можно уменьшить jquery-1.2.5.min.js? потому что есть еще jcycle.js, который судя по всему и вертит фотки.

Octane 18.10.2008 01:33

Ох как только над jQuery не извращаются :-)
menu.js
$(function() {

	var conteiners = $('#menu li > div').hide();

	$('a.js').click(function() {
		conteiners.filter(':visible').slideUp();
		$(this).next().slideDown();
		return false;
	});

});

Пробовал на jQuery 1.2.6, так что если не будет работать, обновитесь до версии 1.2.6

------------------------------
Добавлено


Не внимательно прочитал, Вы же хотели, чтобы можно было обратно закрыть текущую ссылку, тогда так:
$(function() {

	var conteiners = $('#menu li > div').hide();

	$('a.js').click(function() {
		var conteiner = $(this).next();
		if(conteiner.is(':hidden')) {
			conteiners.filter(':visible').slideUp();
			conteiner.slideDown();
		}
		else conteiner.slideUp();
		return false;
	});

});

Виталий С 18.10.2008 02:05

!
 
спасибо ! снимаю шляпу.. работает !

Цитата:

Сообщение от Octane
Ох как только над jQuery не извращаются :-)

это хорошо или плохо?) почему он такой боьшой? могу я заменить его на jquery-1.2.6.pack.js? все-таки разница в 20 кб.. это ж вроде бы стандартная "библиотека", так ее называют?
посоветуйте, может там еще что-то обрезать можно, удалить.. все-таки 3 js файла общей массой 84 кб, а все для чего они нужны - сменяющиеся фото (они одновременно ссылки) и меню.

если вас не затруднит, не могли бы вы вкратце черкануть мне бездарному пару строк в ответ, чтоб я понял что происходит у меня на сайте, который я сам делаю.)

Octane 18.10.2008 02:24

Цитата:

Сообщение от Виталий С (Сообщение 7233)
это хорошо или плохо?)

Все извращения возникают только потому, что люди начинают изучать не сам JavaScript а сразу jQuery :-)

Цитата:

Сообщение от Виталий С (Сообщение 7233)
почему он такой боьшой? могу я заменить его на jquery-1.2.6.pack.js?

Да, можете заменить jquery-1.2.5-min.js на jquery-1.2.6.pack.js. Версия min просто очищена от комментариев и лишних пробельных символов, а версия pack еще и сжата, отсюда и разница в размере.

Цитата:

Сообщение от Виталий С (Сообщение 7233)
это ж вроде бы стандартная "библиотека", так ее называют?

jQuery — это JavaScript framework или другими словами библиотека, которая содержит в себе набор функций для ускорения и упрощения написания кода на JavaScript. И никакая она не стандартная :)
Цитата:

Сообщение от Виталий С (Сообщение 7233)
посоветуйте, может там еще что-то обрезать можно, удалить..

Врятле, если только все на чистом JavaScript написать, без использования jQuery и плагинов к нему :)

Виталий С 18.10.2008 02:40

-
 
спасибо! хорошо тут у вас, затусуюсь здесь. буду продолжать надоедать вопросами. постараюсь конечно подкреплять их кодом.

Виталий С 18.10.2008 03:08

! пардон, не все хорошо. всплыла проблемка. на той же странице внизу в диве news тоже меню, на common.js. оно стало глючить.
что делать? может можно это меню засадить на новый скрипт на основе menu.js? только с той разницей, что блоки должны открываться, не закрываясь один перед другим, т.е. оставаться открытыми в то время как другие тоже можно открывать.

Виталий С 18.10.2008 13:37

Цитата:

на той же странице внизу в диве news тоже меню, на common.js. оно стало глючить.
после некоторых размышлений понял, что глючит там не из-за нового скрипта, т.е. косвенно из-за него, но дело не в нем. после замены <br> на <p> все стало ok. я потом конечно в css пропишу ссылкам clear, и <p> уберу. пока все ok.

wdb_java_master 31.03.2009 11:40

А вот еще примерчик прикольненького меню http://wdb.pp.ua/st_js/pl_menu.html Может пригодится)


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