使用.on的多个下拉菜单选择文本仅适用于第一个下拉菜单
Multiple Dropdowns Menu Selection text using .on works only on first dropdown
我的问题是从引导程序下拉列表中选择一个li
元素并将其显示在下拉框中。当我尝试时,它只更改第一个下拉列表中的文本,第二个下拉事件不起作用。
<div class="dropdown">
<button class="btn btn-default dropdown-toggle changetext" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">Datatypes <span class="caret"></span></button>
<ul class="dropdown-menu scrollbar" aria-labelledby="dropdownMenu1">
<li class="dropdown-header">Generic</li>
<li><a id="num">Number</a></li>
<li><a id="float">Float</a></li>
<li><a>Boolean</a></li>
<li><a>Character</a></li>
<li role="separator" class="divider"></li>
<li class="dropdown-header">Geographical</li>
<li><a>Zip Code</a></li>
<li><a>City</a></li>
<li><a>Region</a></li>
<li><a>Countries</a></li>
<li><a>Latitude/Longitude</a></li>
</ul>
<div>
<div class="dropdown">
<button class="btn btn-default dropdown-toggle changetext" type="button" id="dropdownMenu2" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">Datatypes <span class="caret"></span></button>
<ul class="dropdown-menu scrollbar" aria-labelledby="dropdownMenu2" >
<li class="dropdown-header">Generic</li>
<li><a id="num">Number</a></li>
<li><a id="float">Float</a></li>
<li><a>Boolean</a></li>
<li><a>Character</a></li>
<li role="separator" class="divider"></li>
<li class="dropdown-header">Geographical</li>
<li><a>Zip Code</a></li>
<li><a>City</a></li>
<li><a>Region</a></li>
<li><a>Countries</a></li>
<li><a>Latitude/Longitude</a></li>
</ul>
<div>
对于这两个下拉菜单,我想在下面的元素中显示选择时的文本:
<button class="btn btn-default dropdown-toggle changetext" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">Datatypes <span class="caret"></span></button>
我使用jQuery进行选择和显示,但它只发生在第一个下拉菜单上。
$(".dropdown-menu li a").on("click",function(){
$(".changetext").text($(this).text());
)}
我希望它是你想要的
$(document).ready(function(){
$(".dropdown-menu li a").on("click",function(){
$(".changetext").text($(".changetext").text() + ' ' + $(this).text());
});
});
结果:https://jsfiddle.net/cmedina/bLts45po/
$(function() {
$("div.dropdown .dropdown-menu li a").on("click", function(event) {
$(this).closest("div.dropdown").find("button").text($(this).text());
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="dropdown">
<button class="btn btn-default dropdown-toggle changetext" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">Datatypes <span class="caret"></span>
</button>
<ul class="dropdown-menu scrollbar" aria-labelledby="dropdownMenu1">
<li class="dropdown-header">Generic</li>
<li><a id="num">Number</a>
</li>
<li><a id="float">Float</a>
</li>
<li><a>Boolean</a>
</li>
<li><a>Character</a>
</li>
<li role="separator" class="divider"></li>
<li class="dropdown-header">Geographical</li>
<li><a>Zip Code</a>
</li>
<li><a>City</a>
</li>
<li><a>Region</a>
</li>
<li><a>Countries</a>
</li>
<li><a>Latitude/Longitude</a>
</li>
</ul>
</div>
<div class="dropdown">
<button class="btn btn-default dropdown-toggle changetext" type="button" id="dropdownMenu2" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">Datatypes <span class="caret"></span>
</button>
<ul class="dropdown-menu scrollbar" aria-labelledby="dropdownMenu2">
<li class="dropdown-header">Generic</li>
<li><a id="num">Number</a>
</li>
<li><a id="float">Float</a>
</li>
<li><a>Boolean</a>
</li>
<li><a>Character</a>
</li>
<li role="separator" class="divider"></li>
<li class="dropdown-header">Geographical</li>
<li><a>Zip Code</a>
</li>
<li><a>City</a>
</li>
<li><a>Region</a>
</li>
<li><a>Countries</a>
</li>
<li><a>Latitude/Longitude</a>
</li>
</ul>
</div>
该代码$(".dropdown-menu li a")
的长度为18个元素
该代码$(".changetext")
具有2个元素的长度
对于在任一下拉列表中单击的每一个a
,您都在更改这两个按钮。确保这是您想要的行为,因为这就是JQuery代码正在做的事情。
您需要隔离单击的元素,以便对与下拉列表关联的按钮进行操作。
此代码将对所有$(".dropdown-menu li a")
元素应用相同的单击函数,但将更改DOM 中最靠近单击元素的button
的文本
$("div.dropdown .dropdown-menu li a").on("click", function(event) {
$(this).closest("div.dropdown").find("button").text($(this).text());
});
相关文章:
- 单击下拉菜单时,将文本粘贴到输入框中
- '使用文本区域中的字符串动态填充下拉菜单
- 如何从下拉菜单中读取所选文本
- Bootstrap下拉菜单-仅复选框不选择文本
- 使用带有数据库信息的下拉菜单填充文本框
- 更改下拉菜单后,将文本写入文本框
- 如何在jquery中使用其他下拉菜单来设置下拉菜单的文本和值
- 高亮显示文本后打开下拉菜单
- 级联下拉菜单干扰自动完成文本框
- jquery下拉菜单修改所选文本,但在后续单击时显示先前所选文本的原始值
- 如何根据下拉菜单选择隐藏/显示文本框
- 使用.on的多个下拉菜单选择文本仅适用于第一个下拉菜单
- 如何从自动填充随机数字的下拉菜单中生成一组文本框
- 在任一下拉列表中选择“其他”时,两个下拉菜单将打开一个文本框
- 页面重定向后,使用选定的选项文本更新下拉菜单文本
- 文本区域因下拉菜单中的选定项而异
- 我怎样才能让这个 JavaScript 下拉菜单来处理特定的文本
- HTML 3 依赖的下拉菜单按文本文件填充
- 从依赖于下拉菜单的文本框中获取值,然后添加值
- 我想通过javascript自动更改选择标签的下拉菜单文本