Выбор выпадающего меню с использованием JavaScript без jQuery - PullRequest
0 голосов
/ 21 июня 2019

В настоящее время я использую навигационную панель Bootstrap 4, и у меня есть раскрывающийся список с языками, при выборе параметра раскрывающегося меню его отобразите.

Я использовал jQuery, но мне нужно знать, как это сделать без него.

$(".dropdown-menu a ").click(function() {
  $(this).parents(".dropdown").find('.btn').text($(this).text());
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="dropdown">
  <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
        English
        <span class="caret"></span>
      </button>
  <ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
    <li><a href="#" data-value="english">EN</a></li>
    <li><a href="#" data-value="thai">TH</a></li>
  </ul>
</div>

Ответы [ 3 ]

0 голосов
/ 21 июня 2019

Вы можете назначить прослушиватель кликов для элемента списка, как показано ниже

<div class="dropdown">
      <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
        English
        <span class="caret"></span>
      </button>
      <ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
        <li><a href="#" data-value="english" onclick = "setLang('english')">EN</a></li>
        <li><a href="#" data-value="thai" onclick = "setLang('thai')">TH</a></li>
      </ul>
    </div>
<script>
function setLang(language){

    document.getElementById("dropdownMenu1").innerHTML = language;
}
</script>
0 голосов
/ 21 июня 2019

Вот попытка, но я бы сказал, что использовать jq намного проще

  document.querySelectorAll(".dropdown-menu a").forEach(a=>{
  // Assign a click to each element
 a.addEventListener("click", function(){
  // get the closest eg (parents) and then seacrh for the button
  // when you wrote text i assumed you ment innerhtml.
  a.closest(".dropdown").querySelectorAll(".btn")[0].innerHTML = a.innerHTML;
  })

  })
<div class="dropdown">
  <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
        English
        <span class="caret"></span>
      </button>
  <ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
    <li><a href="#" data-value="english">EN</a></li>
    <li><a href="#" data-value="thai">TH</a></li>
  </ul>
</div>
0 голосов
/ 21 июня 2019

Вы должны получить элементы в соответствии с именем класса и затем добавить прослушиватель событий для этого.

var divs = document.querySelectorAll('.dropdown-item');    
var myFunction = function() {
    alert('Click');
};
for (var i = 0; i < divs.length; i++) {
    divs[i].addEventListener('click', myFunction, false);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...