Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Выпадающий список по onClick (https://javascript.ru/forum/misc/27479-vypadayushhijj-spisok-po-onclick.html)

Wolk_ 14.04.2012 12:00

Выпадающий список по onClick
 
Добрый день, дайте пожалуйста решение, а точнее простую реализацию следующей функции:

- Имеется блок по клику на который открывается вложенный список;
- Закрыть список можно повторным кликом или кликом в любую область сайта.


Для наглядности:


Wolk_ 14.04.2012 23:03

По-моему код явно незаконченный. Ведь список по умолчанию должен быть скрыт, а при клике становиться видимым. В JS я совсем не разбираюсь, так что тема не раскрыта.

trikadin 14.04.2012 23:07

Готовых реализаций много, use google. Если хотите реализацию, адаптированную конкретно под ваши нужды - вам в раздел "Работа".

Wolk_ 15.04.2012 09:47

За меня не нужно выполнять мою работу :) Мне нужно знать ориентировочное расположение списка в блоке и надо ли ему прописывать dispaly:none.

Ведь у меня будет такого рода конструкция (ниже), а значит список по умолчанию должен не отображаться, по клику на заголовок с классом "button" делать список видимым. Также при выборе элемента списка, сам список должен сворачиваться, также список сворачивается и по клику в любой участок страницы (при условии, что список при этом открыт)

<div class="profile">
                	<a href="#" class="button">
                    	<span class="profile_name">Сергей</span>
                        <span class="profile_arrow"></span>
                    </a>
                    <div class="profile_menu">
                    <ul>
                        <li><a href="#">Edit Profile</a></li>
                        <li><a href="#">Account Settings</a></li>
                        <li><a href="#">Appear Offline</a></li>
                        <li><a href="#">Logout</a></li>
                    </ul>
                </div>

bes 16.04.2012 09:35

Цитата:

Сообщение от Wolk_
и надо ли ему прописывать dispaly:none.

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

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

Один из вариантов использовать событие onblur (некроссбраузерно).

Другой вариант: задать обработчик клика на самом body и отфильтровать лишние события (так как неотключённое всплытие событий для любого клика будет приводить к вызову этого обработчика).

Возможно есть и другие варианты.

Wolk_ 16.04.2012 14:43

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

Что требуется:

+ При клике на ссылку открывается скрытый блок/список;
+ При выборе элемента списка - блок/список скрывается;
+ Также закрытие происходит при клике на ссылку вызывающую блок/список и при клике на любой участок страницы.

nerv_ 16.04.2012 15:38

Цитата:

Сообщение от Wolk_
За меня не нужно выполнять мою работу

Цитата:

Сообщение от Wolk_
Не сочтите за наглость, но мне бы конкретный код

:blink:
Цитата:

Сообщение от trikadin
Если хотите реализацию, адаптированную конкретно под ваши нужды - вам в раздел "Работа".


sergiocharm 16.04.2012 15:54

Вот у меня здесь http://www.allremont59.ru/ чуть ниже логотипа есть слово "Метка" кликните по нему, если вам нужно что то типа такого то вам вот этот код:
<script>
function look(type){
param=document.getElementById(type);
if(param.style.display == "none") param.style.display = "block";
else param.style.display = "none"
}
</script>
<h3><a href="javascript:look('div2');"><span>Метки</span></a></h3>
<div id="div2" style="display:none" class="tegs">
               <?php wp_tag_cloud(); ?>
</div>

Wolk_ 16.04.2012 16:12

Цитата:

Сообщение от sergiocharm (Сообщение 169358)
Вот у меня здесь http://www.allremont59.ru/ чуть ниже логотипа есть слово "Метка" кликните по нему, если вам нужно что то типа такого то вам вот этот код:
<script>
function look(type){
param=document.getElementById(type);
if(param.style.display == "none") param.style.display = "block";
else param.style.display = "none"
}
</script>
<h3><a href="javascript:look('div2');"><span>Метки</span></a></h3>
<div id="div2" style="display:none" class="tegs">
               <?php wp_tag_cloud(); ?>
</div>

Благодарю,тему можно закрывать

bes 17.04.2012 09:06

Цитата:

Сообщение от Wolk_
так как с js я вообще не знаком

В чём проблема познакомиться?

Цитата:

Сообщение от Wolk_
нужно на всем сайте его только раз применить.

Ваши сайты вообще обходятся без js?

Цитата:

Сообщение от Wolk_
Благодарю,тему можно закрывать

Вы сами-то кликали по слову "Метка" на указанном сайте?
Это лишь часть решения и не проходит по вашему же пункту:

Цитата:

Сообщение от Wolk_
Также закрытие происходит ....... и при клике на любой участок страницы.



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