我是"创造"我自己的" ComboBox"使用 Bootstrap 3
和 JavaScript 。 Here is the JSFiddle
目前我所拥有的:
<div class="input-group">
<input type="TextBox" ID="datebox" Class="form-control"></input>
<div class="input-group-btn">
<button type="button" class="btn dropdown-toggle" data-toggle="dropdown">
<span class="caret"></span>
</button>
<ul id="demolist" class="dropdown-menu">
<li><a href="#">A</a></li>
<li><a href="#">B</a></li>
<li><a href="#">C</a></li>
</ul>
</div>
</div>
$(document).on('click', '.dropdown-menu li a', function() {
$('#datebox').val($(this).html());
});
这种方法效果很好,直到我想重复这个&#34; ComboBox&#34;在页面上多次。问题在于JQuery函数正在寻找ANY / ALL '.dropdown-menu li a'
。
如何将我的JQuery更改为仅使用 demolist 的 来获取选择值?
我尝试了以下但没有成功:
我尝试了'#demolist .dropdown-menu li a'
,但这不会触发该功能:
$(document).on('click', '#demolist .dropdown-menu li a', function() {
$('#datebox').val($(this).html());
});
我尝试调用 #demolist 的点击,但是#datebox
获取了#demolist的所有列表项的HTML,而不是项目的选择的 innerHTML: / p>
$('#demolist').on('click', function(){
$('#datebox').val($(this).html());
});
工作解决方案是:
$('#demolist li a').on('click', function(){
$('#datebox').val($(this).html());
});
或
$('#demolist li').on('click', function(){
$('#datebox').val($(this).text());
});
答案 0 :(得分:29)
$('#demolist li').on('click', function(){
$('#datebox').val($(this).text());
});
答案 1 :(得分:1)
选择器将#demolist.dropdown-menu li a
注意id和class之间没有空格。
但是,我建议采用更通用的方法:
<div class="input-group">
<input type="TextBox" Class="form-control datebox"></input>
<div class="input-group-btn">
<button type="button" class="btn dropdown-toggle" data-toggle="dropdown">
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li><a href="#">A</a></li>
<li><a href="#">B</a></li>
<li><a href="#">C</a></li>
</ul>
</div>
$(document).on('click', '.dropdown-menu li a', function() {
$(this).parent().parent().parent().find('.datebox').val($(this).html());
});
通过使用类而不是id,并使用parent().find()
,您可以在页面上拥有任意数量的这些,没有重复的js
答案 2 :(得分:1)
使用Bootstrap设计代码
<div class="dropdown-menu" id="demolist">
<a class="dropdown-item" h ref="#">Cricket</a>
<a class="dropdown-item" href="#">UFC</a>
<a class="dropdown-item" href="#">Football</a>
<a class="dropdown-item" href="#">Basketball</a>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function () {
$('#demolist a').on('click', function () {
var txt= ($(this).text());
alert("Your Favourite Sports is "+txt);
});
});
</script>
答案 3 :(得分:0)
您可能希望将jQuery代码稍微修改为'#demolist li a'
,以便它专门选择链接中的文本而不是li元素中的文本。这将允许您有一个子菜单,而不会导致问题。此外,由于您专门选择了一个标记,因此可以使用$(this).text();
访问它。
$('#datebox li a').on('click', function(){
//$('#datebox').val($(this).text());
alert($(this).text());
});
答案 4 :(得分:0)
你刚试过吗
$('#datebox li a').on('click', function(){
//$('#datebox').val($(this).text());
alert($(this).text());
});
它对我有用:)
答案 5 :(得分:0)
Works GReat。
类别问题 苹果 香蕉 樱桃<input type="text" name="cat_q" id="cat_q">
$(document).ready(function(){
$("#btn_cat div a").click(function(){
alert($(this).text());
});
});
答案 6 :(得分:-1)
尝试使用此代码
<input type="TextBox" ID="yearBox" border="0" disabled>
$('#yearSelected li').on('click', function(){
$('#yearBox').val($(this).text());
});
<a href="#" class="dropdown-toggle" data-toggle="dropdown"> <i class="fas fa-calendar-alt"></i> <span>Academic Years</span> <i class="fas fa-chevron-down"></i> </a>
<ul class="dropdown-menu">
<li>
<ul class="menu" id="yearSelected">
<li><a href="#">2014-2015</a></li>
<li><a href="#">2015-2016</a></li>
<li><a href="#">2016-2017</a></li>
<li><a href="#">2017-2018</a></li>
</ul>
</li>
</ul>
它为我工作