Показывать только значки в выпадающем меню Bootstrap 4 с помощью jQuery

#jquery #css #drop-down-menu #bootstrap-4 #dropdown

#jquery #css #выпадающее меню #bootstrap-4 #выпадающий

Вопрос:

Я хочу создать выпадающее меню шрифтов веб-значков, которое отображает соответствующий текст рядом со значками флажков ТОЛЬКО при открытии меню.

Когда выбор сделан и меню закрыто, я хочу видеть ТОЛЬКО значок активного флага без текста.

Веб-страница должна загружаться с одним из флагов, активных по умолчанию, например: Греция

По умолчанию он должен быть выбран с одним из вариантов, таких как Греция
Когда вы нажимаете на него, оно должно рассказать вам больше о стране

Это мой код jQuery, я думаю, что проблемы заключаются в этом (ТЕКСТЕ), но я уверен, что кто-нибудь может исправить этот код или, возможно, даже предложить лучшее решение, поскольку я уверен, что в Bootstrap 4 могут быть другие опции, использующие активное состояние добавления класса / удаления класса с помощью jQuery.

 $(".dropdown-menu li a").click(function(){
  $(this).parents(".dropdown").find('.btn').html($(this).text()   ' <span class="caret"></span>'   ' <span class="caret"></span>');
  $(this).parents(".dropdown").find('.btn').val($(this).data('value'));
});
  

Мой HTML (с использованием Bootstrap 4)

 <nav class="p-0 navbar navbar-expand fixed-top bg-white fixed-top">
    <div class="container">
        <ul class="container-fluid navbar-nav js-signin-modal-trigger justify-content-end list-unstyled" id="navbar2SupportedContent">
            <li class="dropdown">
                <a class="bg-light btn btn-default dropdown-toggle mx-0" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"><span class="flag-icon flag-icon-gr"></span></a>
                <ul class="dropdown-menu text-left" aria-labelledby="dropdownMenu1">
                    <li><a href="#" data-value="action"><span class="ml-2 label label-default"><span class="flag-icon flag-icon-gr"></span>Greece</span> </a> </li>
                    <li><a href="#" data-value="another action"><span class="ml-2 flag-icon flag-icon-fr"></span> <span>France</span></a></li>
                    <li><a href="#" data-value="something else here"><span class="ml-2 flag-icon flag-icon-us"></span> <span>United States</span></a></li>
                    <li><a href="#" data-value="separated link"><span class="ml-2 flag-icon flag-icon-es"></span><span> España</span></a></li>
                </ul>
            </li>
            <li><a href="#" data-signin="login" class="Loginbtn font-weight-bold btn navbar-btn px-md-4 px-sm-2 px-xs-1">Log in</a></li>                
            <li><a href="#" data-signin="signup" class="signupbtn text-white font-weight-bold btn navbar-btn px-md-4 px-sm-2 px-xs-1 ml-md-2 ml-sm-1 btn-secondary">Sign up</a></li>
        </ul>
    </div>
</nav>
  

С этим неплохо поиграть:https://jsfiddle.net/stvu5ckj/1 /

Моей мотивацией для этого кода является веб-сайт www.nextdoor.com Если я смогу создать что-то точно такое, это будет ИДЕАЛЬНО!

По соседству - отличный пример того, что я хочу

Ответ №1:

Привет, я бы посоветовал вам загрузить файл json с названиями iso всех стран, затем в каждом из них сопоставьте код с кодом boostrap, и вы получите название страны, вот json кстати, Json

Надеюсь, это поможет