PHP читать больше читать меньше - Magento 2

Я сделал сценарий «читать больше, читать меньше» для своего интернет-магазина на Magento 2. Это используется на странице категории, где есть блоки подкатегорий сервалов на выбор, каждая подкатегория имеет описание.

Проблема: если я нажму «Читать дальше», все описания подкатегорий будут расширяться, а не только описание подкатегории, на которую я нажал подробнее.

Я начинаю изучать PHP и Magento 2, но не могу это исправить, кто-нибудь знает решение?

  <div class = "product description product-item-description">
                                <div class = "more">
                                <?php  if ($_subCategory->getDescription()) {
        $string = strip_tags($_subCategory->getDescription());

        if (strlen($string) > 250) {
            // truncate string
            $stringCut = substr($string, 0, 250);
            $string = substr($stringCut, 0, strrpos($stringCut, ' ')).'... <a href = "javascript:void(0);" class = "readmore">Lees meer</a>';
        }
        echo $string;
        ?>
        </div>
    <?php
    }else {?>
        <?php /* @escapeNotVerified */ echo $_attributeValue; 
        }
    ?>
    </div>

    <div class = "less" style = "display:none">
        <?php echo $_subCategory->getDescription(); ?>
        <a href = "javascript:void(0);" class = "readless">Lees minder</a>
    </div>
    <script type = "text/javascript">
        console.info('test');
        require(["jquery"],function($){
            $('.readmore').on("click",function(){
                $('.less').show();
                $('.more').hide();
            });
            $('.readless').on("click",function(){
                $('.less').hide();
                $('.more').show();
            });
        });
    </script>
    </div>
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
765
1

Ответы 1

Это связано с тем, что при вводе $('.less').hide(); происходит захват элемента каждый с атрибутом class='less'. Вот как я бы преодолел это:

Начните с присоединения уникального атрибута к каждому <div class = "more"> или <div class = "less"> - в этом случае мы используем атрибут класса: (и перемещаем «больше» или «меньше» в я бы)

<div id = "read-more-block" class = "cat-<?php echo $_subCategory->getId(); ?>">
    <!-- my "read more" content -->
    <a class = "link" href = "#read-more-block">Read Less</a>
</div>

<div id = "read-less-block" class = "cat-<?php echo $_subCategory->getId(); ?>">
    <!-- my "read less" content -->
    <a class = "link" href = "#read-less-block">Read More</a>
</div>

Теперь у нас есть читать дальше-блок и блок без чтения для каждой подкатегории. Когда мы щелкаем внутри ссылка на сайт, должно срабатывать событие jQuery, которое скроет себя и отобразит другое.

А затем в вашем jQuery:

$('#read-more-block .link').on('click', function() { 
    var $readLessBlock = $('#read-less-block.' + $(this).parent().attr('class'));
    $readLessBlock.show(); //Show the read less block
    $(this).parent().hide(); //Hide the read more block
});

..и наоборот, если читать меньше.

Спасибо, Адам, ваш код с модификациями помог мне это исправить.

PIET1995 26.07.2018 18:00

Другие вопросы по теме