Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.11.2015, 17:10
Аспирант
Отправить личное сообщение для Фридрих Посмотреть профиль Найти все сообщения от Фридрих
 
Регистрация: 10.09.2013
Сообщений: 59

сортировать блоки
не получается отсортировать блоки по значению в h1. При этом структура не должна меняться по классу class="news".

<button>click</button>
<div id="content">
      <div class="news">
          <div class="alt">
                  <h1>1</h1>
                  <p>Текст1</p>
          </div>
          <div class="alt">
                  <h1>3</h1>
                  <p>Текст3</p>
          </div>
          <div class="alt">
                  <h1>3</h1>
                  <p>Текст3</p>
          </div>
      </div>
      <div class="news">
          <div class="alt">
                  <h1>2</h1>
                  <p>Текст2</p>
          </div>
          <div class="alt">
                  <h1>4</h1>
                  <p>Текст4</p>
          </div>
          <div class="alt">
                  <h1>6</h1>
                  <p>Текст6</p>
          </div>
      </div>
      <div class="news">
    <div class="alt">
            <h1>5</h1>
            <p>Текст5</p>
    </div>
</div>
</div>
<script>
		$('button').click(function(){
		var $grupp = $('.alt');
		$grupp.sort(function (a, b) {
      var A = parseInt( $(a).find('h1').text() );
      var B = parseInt( $(b).find('h1').text() );
		
		if (A && B) {
        
        return A.toUpperCase().localeCompare(B.toUpperCase());
        
        }
         
        return 0;
         
   		});
   		$grupp.detach().appendTo($grupp);
   	});
</script>
Ответить с цитированием
  #2 (permalink)  
Старый 02.11.2015, 17:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Фридрих,
что должно получиться html?
Ответить с цитированием
  #3 (permalink)  
Старый 02.11.2015, 18:01
Аспирант
Отправить личное сообщение для Фридрих Посмотреть профиль Найти все сообщения от Фридрих
 
Регистрация: 10.09.2013
Сообщений: 59

рони,
должен сортировать по возрастанию или убыванию блоки <div class="alt">
по значению в <h1>
вот так должно получиться:
<div id="content">
      <div class="news">
          <div class="alt">
                  <h1>1</h1>
                  <p>Текст1</p>
          </div>
          <div class="alt">
                  <h1>2</h1>
                  <p>Текст2</p>
          </div>
          <div class="alt">
                  <h1>3</h1>
                  <p>Текст3</p>
          </div>
      </div>
      <div class="news">
          <div class="alt">
                  <h1>3</h1>
                  <p>Текст3</p>
          </div>
          <div class="alt">
                  <h1>4</h1>
                  <p>Текст4</p>
          </div>
          <div class="alt">
                  <h1>5</h1>
                  <p>Текст5</p>
          </div>
      </div>
      <div class="news">
    <div class="alt">
            <h1>6</h1>
            <p>Текст6</p>
    </div>
</div>
</div>

Последний раз редактировалось Фридрих, 02.11.2015 в 18:04.
Ответить с цитированием
  #4 (permalink)  
Старый 02.11.2015, 18:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сортировка блоков по содержимому и группировка по три
Фридрих,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .news  {
     border: 2px solid #191970
  }

  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
$(function() {
    $("button").click(function() {
        var $grupp = $.makeArray($(".alt"));
        $grupp.sort(function(a, b) {
            var A = parseInt($(a).find("h1").text());
            var B = parseInt($(b).find("h1").text());
            return A - B
        });
        $.each($grupp, function(indx, el) {
            $(el).appendTo($(".news").eq(indx / 3 | 0))
        })
    })
});
  </script>
</head>

<body>  <button>click</button>
<div id="content">
      <div class="news">
          <div class="alt">
                  <h1>1</h1>
                  <p>Текст1</p>
          </div>
          <div class="alt">
                  <h1>3</h1>
                  <p>Текст3</p>
          </div>
          <div class="alt">
                  <h1>3</h1>
                  <p>Текст3</p>
          </div>
      </div>
      <div class="news">
          <div class="alt">
                  <h1>2</h1>
                  <p>Текст2</p>
          </div>
          <div class="alt">
                  <h1>4</h1>
                  <p>Текст4</p>
          </div>
          <div class="alt">
                  <h1>6</h1>
                  <p>Текст6</p>
          </div>
      </div>
      <div class="news">
    <div class="alt">
            <h1>5</h1>
            <p>Текст5</p>
    </div>
</div>
</div>
<script>

</script>



</body>

</html>

Последний раз редактировалось рони, 05.06.2023 в 21:02.
Ответить с цитированием
  #5 (permalink)  
Старый 02.11.2015, 18:46
Аспирант
Отправить личное сообщение для Фридрих Посмотреть профиль Найти все сообщения от Фридрих
 
Регистрация: 10.09.2013
Сообщений: 59

рони, очень элегантно, благодарю!
Сам просмотрел в гугле кучу примеров, и только 3 примера того, что я хочу, но там кода - на целую простынь. Не перестаю удивляться.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Слайдер БЛОКИ на одной странице. roswebsoft Events/DOM/Window 3 12.10.2015 16:05
Блоки с contenteditable: true zkolya jQuery 2 16.05.2015 00:17
Показать скрыть блоки nurik2120 Элементы интерфейса 4 18.06.2013 10:59
Вопрос про появляющиеся блоки. Vladislav Библиотеки/Тулкиты/Фреймворки 3 15.06.2013 02:16
Jquery UI Tabs плодятся блоки при переключении между вкладками. Arey jQuery 12 05.09.2012 21:57