Выпадающий список не работает после перехода на другую страницу Laravel - PullRequest
0 голосов
/ 26 мая 2020

У меня проблема: при загрузке страницы у меня есть раскрывающееся меню с выбором языка, и оно отлично работает, пока я не перейду на другую страницу сайта http://en.bls.com.ua/ (работает на менее 1920 пикселей vw). Он должен появиться при нажатии (в правом верхнем углу)

my php / html для этого блока

<div class="lang-block link-h-darked">
    @foreach($languages as $lang)
        @if($lang===$locale)
            @continue
        @endif

        @if(empty($controllerVariables['langs']))
            <a href="{{ route_locale($lang) }}" class="btn btn-lang">{{strtoupper($lang)}}</a>
        @elseif(!isset($controllerVariables['langs'][$lang]))
            <a href="{{ route_locale($lang, true) }}" class="btn btn-lang">{{strtoupper($lang)}}</a>
        @else
            <a href="{{ route_locale_with_slug($lang, Request::route()->getName(), $controllerVariables['langs'][$lang]) }}" class="btn btn-lang">{{strtoupper($lang)}}</a>
        @endif
    @endforeach
</div>
<div class="lang-block-dropdown d-md-flex align-items-center d-xl-none d-xs-none link-h-darked">
    @php
        if ($locale!==$languages[0]) {
            $first_lang = $languages[0];
        } else {
            $first_lang = $languages[1];
        }
    @endphp

    <a href="#" role="button" class="btn title-gray">{{ strtoupper(\App::getLocale()) }}</a>

    <div class="lang-select">
        @foreach($languages as $lang)
            @if($lang===$locale)
                @continue
            @endif

            @if(empty($controllerVariables['langs']))
                <a href="{{ route_locale($lang) }}" class="btn btn-lang">{{strtoupper($lang)}}</a>
            @elseif(!isset($controllerVariables['langs'][$lang]))
                <a href="{{ route_locale($lang, true) }}" class="btn btn-lang">{{strtoupper($lang)}}</a>
            @else
                <a href="{{ route_locale_with_slug($lang, Request::route()->getName(), $controllerVariables['langs'][$lang]) }}" class="btn btn-lang">{{strtoupper($lang)}}</a>
            @endif
        @endforeach
    </div>
</div>

javascript для появления раскрывающегося списка

$('.lang-block-dropdown a').on('click', function (e) {
    $(this.parentNode).toggleClass('active');
    $('.lang-select').slideToggle();
});

1 Ответ

0 голосов
/ 27 мая 2020

дело в том, что это SPA, поэтому он не перезагружает страницу, а повторно отображает ее через AJAX. Таким образом, использование делегатов JQuery помогло решить проблему. Код ниже работает

 $('body').delegate('.lang-block-dropdown', 'click', function () {
    $(this.parentNode).toggleClass('active');
    $('.lang-select').toggleClass('.active-dropdown');
    $('.lang-select').slideToggle();
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...