Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как сделать код на jqery более правильный? (https://javascript.ru/forum/jquery/64006-kak-sdelat-kod-na-jqery-bolee-pravilnyjj.html)

drkrol 14.07.2016 00:27

Как сделать код на jqery более правильный?
 
Здравствуйте. Сделал сот такую штуку для сайта https://jsfiddle.net/yx608nb3/1/ . Правда, получился костыль. Подскажите, как можно этот код оптимизировать, чтобы он был короче.

Vlasenko Fedor 14.07.2016 00:47

https://jsfiddle.net/vlasenkofedor/82kSU/
как вариант

рони 14.07.2016 01:04

drkrol,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .punkt {
  margin-right: 55px;
    font-size: 16px;
    color: #0060ff;
    border-bottom: 1px dashed #498eff;
    cursor: pointer;
}

.punkt:hover {
  border-bottom: 1px solid #0060ff;
}

.re-h, .re-h2 {
  color: #aaa;
}

.nav-a {
  height: 100px;
}

.nav-a .light {
    margin-bottom: 15px;
}

.active {
  border-bottom: none !important;
  color: #aaaaaa !important;
  cursor: default;
}
 .none {
display:none;
}

.in {
  font-size: 24px;
  margin-bottom: 140px;
}
  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

  <script>
$(function() {
$(".nav-a").on("click",".punkt",function(event) {
var el = $(this), text = "/ "+el.text(),
indx = el.addClass('active').siblings(".punkt").removeClass('active').add(el).index(el),
next = el.parent().next();
$("div", next).addClass("none").eq(indx).removeClass("none");;
$(".light span",el.parent()).text(text);
})
});
  </script>
</head>

<body>
<div class="nav-a mot"><div class="s36 light">БЛОК 1 <span class="re-h">/ ОПИСАНИЕ</span></div>
      <span class="h-a1 active punkt pt1">Описание</span>
      <span class="h-a2 punkt pt1">Тарифы</span>
      <span class="h-a3 punkt pt1">Подать заявку</span>
    </div>
    <div class="in">
    <div class="h-b-1">Информация о БЛОК 1</div>
    <div class="h-b-2 none">Тарифы БЛОКА 1</div>
    <div class="h-b-3 none">Форма подачи заявки на БЛОК 1</div>
    </div>
    		<div class="nav-a mot"><div class="s36 light">БЛОК 2 <span class="re-h2">/ ЦЕНЫ</span></div>
      <span class="h-a4 active punkt pt2">Цены</span>
      <span class="h-a5 punkt pt2">Зарегистрировать</span>
    </div>
    <div class="in">
    <div class="h-b-4">Цены на блок 2</div>
    <div class="h-b-5 none">Регистрация блока 2</div>
    </div>

</body>
</html>

drkrol 14.07.2016 01:39

рони,
Здравствуй. Спасибо, а подскажи, что делать, если внутри h-b блоков находятся свои div? https://jsfiddle.net/0m4naLrc/1/

рони 14.07.2016 01:49

drkrol,
$(">div", next)
https://jsfiddle.net/0m4naLrc/2/
лучше если бы все группы блоков имели одинаковые классы

drkrol 14.07.2016 02:29

Цитата:

Сообщение от рони (Сообщение 422017)
drkrol,
$(">div", next)
https://jsfiddle.net/0m4naLrc/2/
лучше если бы все группы блоков имели одинаковые классы

Да классы разные, потому что костыль бы тогда не работал. Подскажи, а можно ко всему этому добавить плавности? С display none плавности не добиться, но можно добиться плавности через opacity. Посмотри: https://jsfiddle.net/0m4naLrc/3/ . Как сделать между появлением и исчезанием небольшую задержку, к примеру, в секунду?

рони 14.07.2016 15:10

Цитата:

Сообщение от drkrol
Как сделать между появлением и исчезанием небольшую задержку, к примеру, в секунду?

.abs{
  transition-delay: 1s;
}


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