Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.06.2020, 15:10
Аватар для LADYX
Профессор
Отправить личное сообщение для LADYX Посмотреть профиль Найти все сообщения от LADYX
 
Регистрация: 19.02.2015
Сообщений: 219

Как показать только первые несколько элементов в блоке?
На странице имеются блоки .container с вложенными в них элементами. Подскажите, пожалуйста, как показывать только первые 3 элемента в блоке? И в случае, если в блоке больше трех элементов, то остальные прятать и выводить ссылку с количеством скрытых в блоке элементов. Как это можно реализовать? Спасибо!
$(document).ready(function() {
  $('.container').find('span:gt(2)').hide()
  $('.container').append('<div class="add">Ещё</div>');
  $('.add').append('<div class="number_hidden"></div>');
  $(".number_hidden").text($(".container span").length)
});
$(".add").click(function() {
  $(".container").find('span').show();
});


<style>
.container span {display: inline-block; margin: 5px; width: 20px; height: 20px; border: 1px solid black;}
.add {display: inline-block; border: none; cursor: pointer;}
.number_hidden {display: inline-block; border: none;}
</style>

<div class="container">
  <span>1</span>
  <span>2</span>
  <span>3</span>
  <span>4</span>
  <span>5</span>
  <span>6</span>
  <span>7</span>
</div>

<div class="container">
  <span>1</span>
  <span>2</span>
  <span>3</span>
</div>

<div class="container">
  <span>1</span>
  <span>2</span>
</div>
Ответить с цитированием
  #2 (permalink)  
Старый 04.06.2020, 15:23
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Можно так

$('.container').each(function() {
    var n = $(this).children().slice(3).hide();
    $('<button/>', {class: 'add', text: n.length}).insertAfter(n.last()).click(function() {
        n.show()
    })
});
Ответить с цитированием
  #3 (permalink)  
Старый 04.06.2020, 15:47
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от LADYX
Как это можно реализовать?
форум - поиск ...
Ответить с цитированием
  #4 (permalink)  
Старый 04.06.2020, 17:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

скрыть после 3 элемента
LADYX,

<!doctype html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
.container span:nth-child(3) ~ span{
   display:  none;
}
.container.more span:nth-child(3) ~ span{
   display: inline-block;
}
.container span {display: inline-block; margin: 5px; width: 20px; height: 20px; border: 1px solid black;}
.add {display: inline-block; border: none; cursor: pointer;}
.container.more .add{
   display: none;
}
</style>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  <script>
$(function() {
$(".container").each(function(i, div){
    var span = $("span:gt(2)", div);
    if (span.length){
    var button = $(`<button class="add"> ... Ещё ${span.length}</button>`)
    div = $(div).on('click', '.add', () => div.addClass('more'))
    button.appendTo(div);
    }
});
});
  </script>

</head>
<body>
<div class="container">
  <span>1</span>
  <span>2</span>
  <span>3</span>
  <span>4</span>
  <span>5</span>
  <span>6</span>
  <span>7</span>
</div>

<div class="container">
  <span>1</span>
  <span>2</span>
  <span>3</span>
</div>

<div class="container">
  <span>1</span>
  <span>2</span>
</div>

</body>
</html>
Ответить с цитированием
  #5 (permalink)  
Старый 05.06.2020, 12:54
Аватар для LADYX
Профессор
Отправить личное сообщение для LADYX Посмотреть профиль Найти все сообщения от LADYX
 
Регистрация: 19.02.2015
Сообщений: 219

рони,
Сообщение от рони
форум - поиск ...
да я всегда прежде чем чего-то сделать, пытаюсь сделать это сам, обязательно пользуюсь поиском. Но когда уже совсем что-то не получается, тогда тогда уже и задаю свой вопрос. Не подумайте, что первым делом мимо поиска бегу за помощью, как это делают некоторые.

Спасибо вам)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сбросить данные формы только при ее отправке? sadovod Общие вопросы Javascript 1 11.04.2020 10:21
Как создать несколько блоков в созданном блоке Biotoxsin Общие вопросы Javascript 2 26.01.2020 17:32
ng-repeat - как вывести только несколько элементов? eniacty Angular.js 1 28.09.2014 19:44
Как сделать чтобы text() брал только текст родителя без текста вложенных контейнеров? Andrey32 jQuery 3 23.05.2009 01:33
Как обработать несколько элементов подряд? vladymyrk jQuery 1 07.01.2009 20:33