【问题标题】:Dropdown menu selection using JavaScript without jQuery使用没有 jQuery 的 JavaScript 的下拉菜单选择
【发布时间】:2019-06-21 07:20:58
【问题描述】:

I am currently using Bootstrap 4 navbar and I have a dropdown with languages, when the dropdown menu option is selected, display it.

我确实使用过 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>

【问题讨论】:

    标签: javascript html arrays object bootstrap-4


    【解决方案1】:

    这是一个尝试,但我会说使用 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>

    【讨论】:

      【解决方案2】:

      你必须根据类名获取元素,然后在其上添加事件监听器。

      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);
      }
      

      【讨论】:

        【解决方案3】:

        您可以将点击监听器分配给如下列表项

        <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>
        

        【讨论】:

          猜你喜欢
          • 2013-06-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-07-01
          • 1970-01-01
          相关资源
          最近更新 更多