Очистить все открытые div

0

У меня есть скрипт, который открывает div, делая onclick = "toogle_visibility (id)

но как это сделать, когда я хочу закрыть div, который открыт и открыт

новый div?

Javascript/JQuery:

function toggle_visibility(id) {
   var e = document.getElementById(id);
   if(e.style.display == 'block')
      e.style.display = 'none';
   else
      e.style.display = 'block';
}

HTML:

<div class="navBar">
<a href="#social" onclick="toggle_visibility('Social')">Social</a>
<a href="#social" onclick="toggle_visibility('Foljer')">F&ouml;ljer</a>
<a href="#social" onclick="toggle_visibility('Bokmarken')">Bokm&auml;rken</a>
</div>
<div id="Social">
<a href="http://www.twitter.com/Liam_Rab3">@Liam_Rab3 - TWITTER</a><br>
<a href="http://www.twitter.com/Liam_Rab3">@Liam_Rab3 - INSTAGRAM</a><br>
<a href="http://www.facebook.com/LiamRab3">@LiamRab3- FACEBOOK</a><br>
<a href="http://www.youtube.com/howmuchtimedr">@Liam_Rab3 - YOUTUBE</a><br>
<a href="http://www.flickr.com/Liam_Rab3">@Liam_Rab3 - FLICKR</a><br>
<a href="http://www.thenotallowedguy.tk">@Liam_Rab3 - TUMBLR</a><br>
</div>
<div id="Foljer">
<a href="http://www.instagram.com/sebbestakset">Sebbe Stakset (Kartellen)</a>
</div>

CSS:

a:link {
color:white;
text-decoration:none;
-o-transition:.5s;
-ms-transition:.5s;
-moz-transition:.5s;
-webkit-transition:.5s;
transition:.5s;
}
a:hover {
color:white;
text-decoration:none;
font-size:100%;
}
a:visited {
text-shadow:0px 0px 0px #0066BB;
color:white;
}
#social {
display:none;
}
#Foljer {
display:none;
}

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ!

Эти ссылки в ссылках #social и #bokmarken не предназначены для коммерческих целей.

  • 0
    Вы хотите, чтобы только один из выбранных элементов div ['Social', 'Foljer', 'Bokmarken'] был открыт одновременно, или можно открыть несколько меню?
Показать ещё 2 комментария

2 ответа

1

Вы можете использовать JQuery Toggle

<div id="clickme">
  Click here !!!
</div>
<a href="#social" >Social</a>

$( "#clickme" ).click(function() {
  $( "#social" ).toggle(); //With no parameters, the .toggle() method simply toggles the visibility of elements:
});

Сначала выберите элемент управления, который вы хотите скрыть/показать, затем используйте этот идентификатор управления следующим образом:

$('#<id-of-that-control>').toggle();

Теперь вы можете вызвать это в обработчике событий onclick кнопки или div по вашему желанию.

Как это может показаться для вас:

JS

function toggle_visibility(id) {
     $('#' + id).toggle();
}

HTML

<div class="navBar">
<a href="#social" onclick="toggle_visibility('Social')">Social</a>
<a href="#social" onclick="toggle_visibility('Foljer')">F&ouml;ljer</a>
<a href="#social" onclick="toggle_visibility('Bokmarken')">Bokm&auml;rken</a>
</div>

Обновление: как указал Броди, казалось бы, вы всегда можете заглянуть в решение, предоставленное Нитом Темным Абсолютом. Поскольку он предоставляет вам чистую реализацию JS. Мое решение даст вам представление об использовании библиотеки JQuery и API для переключения. JQuery предоставляет широкий спектр встроенных функций, которые помогут вам быстро сделать это. В моей части кода вы используете утилиту api ie toggle, которая при использовании будет такой же, как поведение hide и show.

  • 0
    Могу ли я изменить $ ("#book") .toggle ("медленный", function () {с $ ("id") .toggle ("медленный", function () {или что-то в этом роде?
  • 0
    Да, или просто направьте одну функцию и привяжите ее к элементу с помощью $ (this) .click (function ()
Показать ещё 9 комментариев
0

В принципе, вам нужно закрыть все DIV и переключить текущий.

Попробуй это:

var ids = ['Social','Foljer','Bokmarken'];
function toggle_visibility(id) {
   var l = ids.length, i, e;
   for( i=0; i<l; i++) {
       e = document.getElementById(ids[i]);
       if( id != ids[i])
          e.style.display = 'none';
       else if(e.style.display == 'block')
          e.style.display = 'none';
       else
          e.style.display = 'block';
    }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню