【问题标题】: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>