Javascript.RU

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

Найти родителя в JS
У меня есть такой код. Он должен работать по принципу когда кликаешь на подробнее открываются блоки у которых общих родитель. И я могу это сделать с одним блоком, но нужно что бы были классы и они находили общего родителя и применялись внутри родителя. Я это понимаю но не могу правильно написать синтаксис. То есть кликнул на подробнее он открыл блоки в который общий родитель

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
    .wraper {
    }
    .blok_1 {
        font-size: 18px;
    }
    .blok_2 {
        font-size: 18px;
    }
    .blok_2_1 {

    }
    .blok_2_2 {
        color: tomato;
        cursor: pointer;
        text-decoration: underline;
    }
    .blok_3 {
        font-size: 14px;
    }
    .blok_4 {
        font-size: 14px;
    }
    .vlya_svoih{
        display: none;
    }
    </style>
</head>

<div class="wraper">
    <div class="blok_1">
        Данные 1
    </div>
    <br><br>
    <div class="blok_2">
        <div class="blok_2_1">Заголовок</div>
        <div class="blok_2_2">Подробнее</div>
    </div>
    <br><br>
    <div class="blok_3">Этот блок нужно скрыть 1</div>
    <div class="blok_4">Этот блок нужно скрыть 2</div>
</div>
<br><br><br><br>
<div class="wraper">
    <div class="blok_1">
        Данные 1
    </div>
    <br><br>
    <div class="blok_2">
        <div class="blok_2_1">Заголовок</div>
        <div class="blok_2_2">Подробнее</div>
    </div>
    <br><br>
    <div class="blok_3">Этот блок нужно скрыть 1</div>
    <div class="blok_4">Этот блок нужно скрыть 2</div>
</div>

<body>
    <script>
        let podrobnee = document.querySelector(".blok_2_2");
        let blok_3 = document.querySelector(".blok_3");
        let blok_4 = document.querySelector(".blok_4");

        let podrobnee_fun = () => {
            blok_3.classList.toggle('vlya_svoih'); 
            blok_4.classList.toggle('vlya_svoih');  
        }
        podrobnee.addEventListener("click", podrobnee_fun);
    </script>
</body>
</html>
Ответить с цитированием
  #2 (permalink)  
Старый 02.06.2022, 11:35
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 651

Даже я логику понять не могу. Получатся если у блоков общий родитель то применить к ним, но как это написать
Ответить с цитированием
  #3 (permalink)  
Старый 02.06.2022, 11:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Сергей Ракипов,
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .wraper {}
        .blok_1 {
            font-size: 18px;
        }
        .blok_2 {
            font-size: 18px;
        }
        .blok_2_1 {}
        .blok_2_2 {
            color: tomato;
            cursor: pointer;
            text-decoration: underline;
        }
        .blok_3 {
            font-size: 14px;
        }
        .blok_4 {
            font-size: 14px;
        }
        .vlya_svoih {
            display: none;
        }
    </style>
</head>
<div class="wraper">
    <div class="blok_1">
        Данные 1
    </div>
    <br><br>
    <div class="blok_2">
        <div class="blok_2_1">Заголовок</div>
        <div class="blok_2_2">Подробнее</div>
    </div>
    <br><br>
    <div class="blok_3">Этот блок нужно скрыть 1</div>
    <div class="blok_4">Этот блок нужно скрыть 2</div>
</div>
<br><br><br><br>
<div class="wraper">
    <div class="blok_1">
        Данные 1
    </div>
    <br><br>
    <div class="blok_2">
        <div class="blok_2_1">Заголовок</div>
        <div class="blok_2_2">Подробнее</div>
    </div>
    <br><br>
    <div class="blok_3">Этот блок нужно скрыть 1</div>
    <div class="blok_4">Этот блок нужно скрыть 2</div>
</div>
<body>
    <script>
        let podrobnee_fun = ({
            target
        }) => {
            if (target = target.closest('.blok_2_2')) {
                target = target.closest('.wraper')
                target.querySelector('.blok_3').classList.toggle('vlya_svoih');
                target.querySelector('.blok_4').classList.toggle('vlya_svoih');
            }
        }
        document.addEventListener("click", podrobnee_fun);
    </script>
</body>
</html>
Ответить с цитированием
  #4 (permalink)  
Старый 02.06.2022, 11:40
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 651

рони,
Вот так просто, а я читал и искал что нужно найти родителя .parentNode и как то нужно применить
Ответить с цитированием
  #5 (permalink)  
Старый 02.06.2022, 12:10
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 651

рони,
Спасибо
Ответить с цитированием
  #6 (permalink)  
Старый 02.06.2022, 13:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Сергей Ракипов,
менять класс hide надо только у .wraper, blok_3 и blok_4 заменить на общий для них класс.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Где найти красивый пример JS Web Interface аппаратуры? Was-Ja Мобильный JavaScript 2 03.06.2021 00:43
Подскажите где можно найти хорошую документацию по функциям Js Wahtel jQuery 0 29.12.2014 22:27
jquery как найти элемент сгенерированный js razorg1991 Events/DOM/Window 5 31.08.2014 12:52
Где найти документацию по js prowoke Оффтопик 2 17.07.2011 19:20
Найти проблему с jQuery или писать js? Saladdin Элементы интерфейса 0 17.03.2011 17:02