Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.10.2018, 22:11
Аспирант
Отправить личное сообщение для samdo Посмотреть профиль Найти все сообщения от samdo
 
Регистрация: 27.05.2017
Сообщений: 98

Display:none to display:block ?
Приветствую, братья!
Не первый раз пишу с просьбой в надежде, что (как всегда) мне тут подскажут решение задачки)

Есть конструкция вот такого вида:

Код:
<div class="inner">
	<div class="product-row">Product 1</div>
	<div class="product-row">Product 2</div>
	<div class="product-row">Product 3</div>
	<div class="product-row">Product 4</div>
	<div class="product-row">Product 5</div>
	<div class="product-row">Product 6</div>
	<div class="product-row">Product 7</div>
	<div class="product-row">Product 8</div>
	<div class="view_all">
		<span>View all elements</span>
	</div>
</div>
И css:

Код:
.product-row:nth-child(5),
.product-row:nth-child(6),
.product-row:nth-child(7),
.product-row:nth-child(8) {
	display: none;
}
Подскажите, как по клику на "View all elements" применить "display:block" к тем, кому мы через "nth-child" задали "display:none".

Или сделать из этого спойлер, главное чтобы это работало через nth-child (первые четыре элемента показываем, остальные показываем только по клику).
Спасибо!

Последний раз редактировалось samdo, 05.10.2018 в 22:17.
Ответить с цитированием
  #2 (permalink)  
Старый 05.10.2018, 22:18
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,080

Сообщение от samdo
как по клику на "View all elements" применить "display:block"
добавить класс блоку inner
Ответить с цитированием
  #3 (permalink)  
Старый 05.10.2018, 22:22
Аспирант
Отправить личное сообщение для samdo Посмотреть профиль Найти все сообщения от samdo
 
Регистрация: 27.05.2017
Сообщений: 98

Сообщение от рони Посмотреть сообщение
добавить класс блоку inner
Классов "inner" несколько на странице (возможно штук 10).
Ответить с цитированием
  #4 (permalink)  
Старый 05.10.2018, 22:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,080

Сообщение от samdo
Классов "inner" несколько на странице
обойти циклом все блоки
Ответить с цитированием
  #5 (permalink)  
Старый 05.10.2018, 22:28
Аспирант
Отправить личное сообщение для samdo Посмотреть профиль Найти все сообщения от samdo
 
Регистрация: 27.05.2017
Сообщений: 98

А без добавления класса для "inner" есть варианты?
Ответить с цитированием
  #6 (permalink)  
Старый 05.10.2018, 22:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,080

Сообщение от samdo
А без добавления класса
а зачем усложнять? иначе снова цикл по блокам для клика и в каждом клике поиск нужных блоков , можно конечно делегирование вместо первого клика, но это не отменит бесполезного поиска скрытых блоков.
Ответить с цитированием
  #7 (permalink)  
Старый 05.10.2018, 22:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,080

тема отрывашка будет вечной ...
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
.product-row:nth-child(n + 5){
	display: none;
}
.inner.showAll  .product-row {
      display: block;
}
.view_all {
    cursor: pointer;
}

</style>

  <script>
document.addEventListener("DOMContentLoaded", function() {
    var inner = document.querySelectorAll(".inner");
    [].forEach.call(inner, function(div) {
        div.querySelector(".view_all").addEventListener("click", function() {
            div.classList.toggle("showAll")
        })
    })
});
  </script>
</head>

<body>
<div class="inner">
	<div class="product-row">Product 1</div>
	<div class="product-row">Product 2</div>
	<div class="product-row">Product 3</div>
	<div class="product-row">Product 4</div>
	<div class="product-row">Product 5</div>
	<div class="product-row">Product 6</div>
	<div class="product-row">Product 7</div>
	<div class="product-row">Product 8</div>
	<div class="view_all">
		<span>View all elements</span>
	</div>
</div>
<div class="inner">
	<div class="product-row">Product 1</div>
	<div class="product-row">Product 2</div>
	<div class="product-row">Product 3</div>
	<div class="product-row">Product 4</div>
	<div class="product-row">Product 5</div>
	<div class="product-row">Product 6</div>
	<div class="product-row">Product 7</div>
	<div class="product-row">Product 8</div>
	<div class="view_all">
		<span>View all elements</span>
	</div>
</div>
</body>
</html>
Ответить с цитированием
  #8 (permalink)  
Старый 06.10.2018, 07:54
Аспирант
Отправить личное сообщение для samdo Посмотреть профиль Найти все сообщения от samdo
 
Регистрация: 27.05.2017
Сообщений: 98

Преогромнейшая благодарность.
P.S. Может еще подскажете как сделать, чтобы но плавно появлялось? )

Последний раз редактировалось samdo, 06.10.2018 в 08:30.
Ответить с цитированием
  #9 (permalink)  
Старый 06.10.2018, 09:13
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,080

Сообщение от samdo
чтобы но плавно появлялось? )
открывашка 230 на js закрыть на указанную величину

ищите по форуму открывашка, есть более 400 примеров
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
display:block в зависимости от выбраного элемента maksqwerty Элементы интерфейса 6 26.01.2018 13:38
Выполнить JS если div имеет свойство display:block rodiony4 jQuery 3 12.01.2016 11:10
IE8 и баг с display:none для td (ячейки таблицы) SegaMega Events/DOM/Window 1 21.09.2012 06:56
getelementbyid при display:none lol4eg Элементы интерфейса 7 09.08.2012 11:18
Изменение видимости <optgroup> (из display:none) vahrusha Events/DOM/Window 3 06.06.2010 20:32