Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   вывод контента по принципу табов (https://javascript.ru/forum/misc/74599-vyvod-kontenta-po-principu-tabov.html)

komned37 23.07.2018 16:36

вывод контента по принципу табов
 
Добрый день!

Есть разметка
<div class="container">
    <div class="item-box">
        <div class="item">1</div>
        <div class="item">2</div>
    </div>
    <div class="item-box">
        <div class="item">3</div>
        <div class="item">4</div>
    </div>
    <div class="item-box">
        <div class="item">5</div>
        <div class="item">6</div>
    </div>
    <div class="item-box">
        <div class="item">7</div>
        <div class="item">8</div>
    </div>
    ....
</div>

<div class="items-content">
    <div class="item-content">1</div>
    <div class="item-content">2</div>
    <div class="item-content">3</div>
    <div class="item-content">4</div>
    <div class="item-content">5</div>
    <div class="item-content">6</div>
    <div class="item-content">7</div>
    <div class="item-content">8</div>
    .....
</div>


По клику на item должен открываться соответствующий по порядковому номеру item-content
пишу код:
$(".item").click(function() {
  $(".item-content").hide().eq($(this).index()).fadeIn();
   
});


В этом случае выводятся только первый и второй контент, так как item заключен в бокс и его порядковый номер максимум 2.
Как сделать чтоб все работало нормально.

j0hnik 23.07.2018 16:46

для данного случая
$(".item-content").hide().eq( $(this).text() -1 ).fadeIn();


:D

j0hnik 23.07.2018 16:54

$(".item-content").hide().eq( $(this).index() + (($(this).parent().index()+1)*2)-2).fadeIn();

komned37 23.07.2018 17:06

Первый вариант для меня не подходит, так как внутри блоков есть еще много других))))а вот второй вариант замечательный, все работает отлично. Огромное Вам спасибо!

рони 23.07.2018 17:06

... открывашка ... наверно №...

рони 23.07.2018 17:07

j0hnik,
зачем так сложно?

j0hnik 23.07.2018 17:08

рони,
как проще?

рони 23.07.2018 17:13

j0hnik,
смотри пост №1 и измени/поменяй два селектора

рони 23.07.2018 17:31

j0hnik,
что мешает найти нужный индекс сразу!!!

j0hnik 23.07.2018 17:32

рони,
родители :D

рони 23.07.2018 17:42

j0hnik,
$(".item").click(function() {
  $(".item-content").hide().eq($(что-то_здесь?).index(что-то_тут?)).fadeIn();
   
});

j0hnik 23.07.2018 18:05

рони,

$(".item").click(function() {
  $(".item-content").hide().eq($(this).index('.item','.container')).fadeIn();
});


один тогда поменять

рони 23.07.2018 18:07

j0hnik,
//$(".item").index(this)
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
   .items-content > div{
       display: none;
   }
  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

  <script>
$(function() {
var item = $(".item"), content = $(".item-content");
item.click(function() {
  content.hide().eq(item.index(this)).fadeIn();
 });
});
  </script>
</head>

<body>
<div class="container">
    <div class="item-box">
        <div class="item">1</div>
        <div class="item">2</div>
    </div>
    <div class="item-box">
        <div class="item">3</div>
        <div class="item">4</div>
    </div>
    <div class="item-box">
        <div class="item">5</div>
        <div class="item">6</div>
    </div>
    <div class="item-box">
        <div class="item">7</div>
        <div class="item">8</div>
    </div>
    ....
</div>

<div class="items-content">
    <div class="item-content">1</div>
    <div class="item-content">2</div>
    <div class="item-content">3</div>
    <div class="item-content">4</div>
    <div class="item-content">5</div>
    <div class="item-content">6</div>
    <div class="item-content">7</div>
    <div class="item-content">8</div>
    .....
</div>

</body>
</html>

j0hnik 23.07.2018 19:48

рони,
спасибо =)


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