Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.11.2018, 21:50
Интересующийся
Отправить личное сообщение для Perepelenok Посмотреть профиль Найти все сообщения от Perepelenok
 
Регистрация: 16.07.2016
Сообщений: 26

Сортировка, обьединение елементов по классу
Здравствуйте. Есть такой код разметки с использованием PHP(сайт на вордпресс)

<span class="<?php the_field('year');?>">
<a href="<?php the_permalink(); ?>">
	<?php the_field('year');?> 
	|
	<strong><?php the_title()?></strong>
	/
	<?php if( have_rows('quick-info') ): while( have_rows('quick-info') ): the_row(); ?>
	<?php echo get_sub_field('location'); ?>
	<?php endwhile; endif ?>
	<br>
</a>
</span>


С инициализацией Php код будет таким :

<span class="2018">
<a href="https:/url.com">
	2018
	|
	<strong>Название</strong>
	/
	Москва, Россия
	<br>
</a>
</span>
<span class="2018">
<a href="https:/url.com">
	2018
	|
	<strong>Название</strong>
	/
	Санкт-Петербург, Россия
	<br>
</a>
</span>
<span class="2017">
<a href="https:/url.com">
	2017
	|
	<strong>Название</strong>
	/
	Москва, Россия
	<br>
</a>
</span>


Нужно чтоб елементы с одинаковым годом(классом) обьеденялись в <p>. Проблема в том что изначально года не известны, тоесть могут быть 2018 могут быть 1992 и они будут пополняться.

Вот как мне нужно :
<p>
<span class="2018">
<a href="https:/url.com">
	2018
	|
	<strong>Название</strong>
	/
	Москва, Россия
	<br>
</a>
</span>
<span class="2018">
<a href="https:/url.com">
	2018
	|
	<strong>Название</strong>
	/
	Санкт-Петербург, Россия
	<br>
</a>
</span>
</p>
<p>
<span class="2017">
<a href="https:/url.com">
	2017
	|
	<strong>Название</strong>
	/
	Москва, Россия
	<br>
</a>
</span>
</p>
Ответить с цитированием
  #2 (permalink)  
Старый 22.11.2018, 22:23
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,118

Perepelenok,
можно class переделать на data-year="2018"?
Ответить с цитированием
  #3 (permalink)  
Старый 22.11.2018, 22:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,118

Perepelenok,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  p {
      border: #FF0000 1px solid;
  }

  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <script>
$(function() {
    var obj = {};
    $("[data-year]").each(function() {
        var el = $(this),
            year = $(this).data("year"),
            p = obj[year];
        if (p) el.appendTo(p);
        else obj[year] = el.wrap("<p/>").parent()
    })
});
  </script>
</head>

<body>
<span data-year="2018">
<a href="https:/url.com">
	2018
	|
	<strong>Название</strong>
	/
	Москва, Россия
	<br>
</a>
</span>
<span data-year="2018">
<a href="https:/url.com">
	2018
	|
	<strong>Название</strong>
	/
	Санкт-Петербург, Россия
	<br>
</a>
</span>
<span data-year="2017">
<a href="https:/url.com">
	2017
	|
	<strong>Название</strong>
	/
	Москва, Россия
	<br>
</a>
</span>

</body>
</html>
Ответить с цитированием
  #4 (permalink)  
Старый 22.11.2018, 23:33
Интересующийся
Отправить личное сообщение для Perepelenok Посмотреть профиль Найти все сообщения от Perepelenok
 
Регистрация: 16.07.2016
Сообщений: 26

Спасибо тебе огромное!Это то что мне нужно!Единственный вопрос еще - как сделать сортировку по годам от большего к меньшему (2018, 2017 к примеру) ?
Ответить с цитированием
  #5 (permalink)  
Старый 22.11.2018, 23:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,118

Perepelenok,
лучше если будет общий блок!
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  p {
      border: #FF0000 1px solid;
  }

  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <script>
$(function() {
    var obj = {}, parent = $(".content");
    $("[data-year]").each(function() {
        var el = $(this),
            year = $(this).data("year"),
            p = obj[year];
        if (p) el.appendTo(p);
        else obj[year] = el.wrap("<p/>").parent()
    })
    Object.keys(obj).sort(function(a,b) {
   return b - a
   }).forEach(function(year) {
   obj[year].appendTo(parent)
   })
});
  </script>
</head>

<body>
<div class="content">
<span data-year="2018">
<a href="https:/url.com">
    2018
    |
    <strong>Название</strong>
    /
    Москва, Россия
    <br>
</a>
</span>
<span data-year="2016">
<a href="https:/url.com">
    2016
    |
    <strong>Название</strong>
    /
    Санкт-Петербург, Россия
    <br>
</a>
</span>
<span data-year="2017">
<a href="https:/url.com">
    2017
    |
    <strong>Название</strong>
    /
    Москва, Россия
    <br>
</a>
</span>
</div>
</body>
</html>
Ответить с цитированием
  #6 (permalink)  
Старый 22.11.2018, 23:58
Интересующийся
Отправить личное сообщение для Perepelenok Посмотреть профиль Найти все сообщения от Perepelenok
 
Регистрация: 16.07.2016
Сообщений: 26

Есть проблема - я не указал сразу, но у меня есть табы, в которых выводятся свои списки страниц с определенной категории (cat 1, cat 2, cat3) и если в 1 табе и во 2 есть data-year="2018", то елемент со 2 таба переходит в 1 и обьеденятся с этим елементом из последнего таба.

Тоесть у меня код выглядет так...

<div class="right-wrap tab_container">
     <article id="tab1" class="tab_content">
        Тут выводится список из категории "cat 1".
 </article>
      <article id="tab2" class="tab_content">
                Тут выводится список из категории "cat 2".
      </article>
      <article id="tab3" class="tab_content">
Тут выводится список из категории "cat 3".
                    </article>
    </div>
Ответить с цитированием
  #7 (permalink)  
Старый 22.11.2018, 23:59
Интересующийся
Отправить личное сообщение для Perepelenok Посмотреть профиль Найти все сообщения от Perepelenok
 
Регистрация: 16.07.2016
Сообщений: 26

Можно вписать имя или $id категории в class таба и елемента списка, к примеру и тогда что то придумать...

Последний раз редактировалось Perepelenok, 23.11.2018 в 00:03.
Ответить с цитированием
  #8 (permalink)  
Старый 23.11.2018, 00:02
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,118

Perepelenok,
не понимаю
Ответить с цитированием
  #9 (permalink)  
Старый 23.11.2018, 00:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,118

Perepelenok,
сделайте минимальный пример вашей структуры
Ответить с цитированием
  #10 (permalink)  
Старый 23.11.2018, 00:11
Интересующийся
Отправить личное сообщение для Perepelenok Посмотреть профиль Найти все сообщения от Perepelenok
 
Регистрация: 16.07.2016
Сообщений: 26

Вот такой код у меня сейчас...


<script>
$(function() {
    var obj = {};
    $("[data-year]").each(function() {
        var el = $(this),
            year = $(this).data("year"),
            p = obj[year];
        if (p) el.appendTo(p);
        else obj[year] = el.wrap("<p/>").parent()
    })
});

  </script>
<div class="content" id="pj_cycle">
  <div class="middle-wrap two-side-wrap" id="wrap">
    <div class="left-wrap" style="width: 100px;">
      <span>
        <h3>
          <?php $title = the_title(); ?>
        </h3>
        <ul class="hor-tabs">
            <li class="active" rel="tab1">1 Таб</li>
            <li rel="tab2">2 Таб</li>
            <li rel="tab3">3 Таб</li>
        </ul>
      </span>
    </div>
    <div class="right-wrap tab_container">
     <article id="tab1" class="tab_content">
<span data-year="2018">
<a href="https:/url.com">
    2018
    |
    <strong>Название</strong>
    /
    Москва, Россия
    <br>
</a>
</span>
<span data-year="2016">
<a href="https:/url.com">
    2016
    |
    <strong>Название</strong>
    /
    Санкт-Петербург, Россия
    <br>
</a>
</span>
</article>
<article id="tab2" class="tab_content">
<span data-year="2018">
<a href="https:/url.com">
    2017
    |
    <strong>Название</strong>
    /
    Москва, Россия
    <br>
</a>
</span>
</article>
<article id="tab3" class="tab_content">
<span data-year="2018">
<a href="https:/url.com">
    2017
    |
    <strong>Название</strong>
    /
    Москва, Россия
    <br>
</a>
</span>
</article>
    </div>
  </div>
</div>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Говнокод)) Сортировка пузырьком. Lorines Ваши сайты и скрипты 3 03.10.2013 01:23
вибрать всех елементов кроме заданного () dadli Общие вопросы Javascript 2 15.06.2012 16:45