Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.01.2014, 13:33
Интересующийся
Отправить личное сообщение для XFlame Посмотреть профиль Найти все сообщения от XFlame
 
Регистрация: 07.05.2013
Сообщений: 10

Оптимизация фильтрации и показа
Уважаемые знатоки!
Подскажите новичку ))
Допустим есть такая разметка:
<div id="container">
  <div id="nav">
    <a href="#title1">Показать только Title 1</a>
    <a href="#title2">Показать только Title 2</a>
    <a href="#title3">Показать только Title 3</a>
    <!-- и так далее -->
  </div>
  <div id="title1" class="panel">Title 1</div>
  <div id="title2" class="panel">Title 2</div>
  <div id="title3" class="panel">Title 3</div>
    <!-- и так далее -->
</div>


Мне нужно, чтобы при клике на ссылку показывался только соответствующий ей блок. Таких блоков будет где-то 30-40 штук.

Я делаю так:
$(document).ready(function(){
    $('#nav a[href="#title1"]').click(function(){
      $('.panel').hide();
      $('#title1').show();
    });
    $('#nav a[href="#title2"]').click(function(){
      $('.panel').hide();
      $('#title2').show();
    });
    $('#nav a[href="#title3"]').click(function(){
      $('.panel').hide();
      $('#title3').show();
    });
    // и так далее
});


Но, я подозреваю, что этот код можно упростить, например, как-то так:
1. Отследить клик по ссылке внутри блока #nav.
2. Занести в переменную соответствующее значение href.
2. Спрятать все блоки с классом .panel
3. Вывести блок с id (из переменной)

Как это практически сделать? А может есть еще более простое решение?
Ответить с цитированием
  #2 (permalink)  
Старый 21.01.2014, 14:13
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,078

XFlame,

<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .panel{
    display: none;
  }

  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
  <script>
$(document).ready(function () {
   var $title = $('a[href ^= #title]'), $panel = $('.panel');
    $('#container').on('click', $title, function (event) {
        var id = event.target.hash, div = $(id);
        $panel.not(div).slideUp()
        div.slideToggle();
        return false
    });
});
  </script>
</head>
<body>
<div id="container">
  <div id="nav">
    <a href="#title1">Показать/Скрыть только Title 1</a>
    <a href="#title2">Показать/Скрыть только Title 2</a>
    <a href="#title3">Показать/Скрыть только Title 3</a>
    <!-- и так далее -->
  </div>
  <div id="title1" class="panel">Title 1</div>
  <div id="title2" class="panel">Title 2</div>
  <div id="title3" class="panel">Title 3</div>
    <!-- и так далее -->
</div>
</body>
</html>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SEO (поисковая оптимизация) nerv_ Оффтопик 9 30.08.2012 13:34
Оптимизация большого приложения danik.js Общие вопросы Javascript 9 03.07.2012 19:30
Оптимизация кода mycoding Общие вопросы Javascript 6 21.04.2010 10:42