【问题标题】:Get selected item value from Bootstrap DropDown with specific ID从具有特定 ID 的 Bootstrap DropDown 获取选定项目值
【发布时间】:2014-08-28 12:49:47
【问题描述】:

我正在使用 Bootstrap 3JavaScript “创建”我自己的“组合框”。 Here is the JSFiddle 到目前为止我所拥有的:

HTML:

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

JavaScript:

$(document).on('click', '.dropdown-menu li a', function() {
    $('#datebox').val($(this).html());
}); 

这种方法效果很好,直到我想在页面上多次重复这个“组合框”。问题在于查找 ANY/ALL '.dropdown-menu li a' 的 JQuery 函数。

如何将我的 JQuery 更改为 查找 ID 为 demolist 的 UL 并获取其 selected 值?

我尝试了以下方法但没有成功:

我尝试了'#demolist .dropdown-menu li a',但这不会触发该功能:

$(document).on('click', '#demolist .dropdown-menu li a', function() {
    $('#datebox').val($(this).html());
}); 

我尝试调用 #demolist 的 Click,但 #datebox 获得了 #demolist 的所有列表项的 HTML,而不是项目的 selected innerHTML:

$('#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());
});

【问题讨论】:

标签: javascript jquery html twitter-bootstrap


【解决方案1】:
$('#demolist li').on('click', function(){
    $('#datebox').val($(this).text());
});

http://jsfiddle.net/kcpma/18/

【讨论】:

  • 我以前也试过这个,但它对我不起作用。问题是如何获取 SELECTD 项,而不是所有项。
  • 好收获!工作代码是#demolist li a
  • 这将为我返回 value="[object Object]"
【解决方案2】:

使用 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>
  • jquery 代码

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

    选择器将是 #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

    【讨论】:

    • 你是对的,但是我有兴趣获取特定 LIST 的选定值。您的方法仅使用 .datebox 类更新 ANY INPPUT。
    • 正如我所说,#demolist.dropdown-menu li a 会做你想做的事。但是,我建议的代码会更新单击链接旁边的 specific 输入(技术上是 ul 的同级输入),因此您可以在一个页面上拥有 10 个这样的代码块,并且每个更新自己的输入
    • 是的,但问题是:任何具有类 .dropdown-menu li a 的项目都会触发 CLICK 功能。我只想在单击带有项目列表的特定 UL 时触发该功能。谢谢你的帮助!我赞成你的回答。
    • 啊,好吧,我的印象是您想要创建一个可重用的控件,而不必为每个控件连接特定的点击处理程序。我的错误,很高兴您找到了解决方案
    【解决方案4】:

    你试过了吗

    $('#datebox li a').on('click', function(){
        //$('#datebox').val($(this).text());
        alert($(this).text());
    });
    

    它对我有用:)

    【讨论】:

    • Yohann,请添加有关您如何测试它的更多详细信息,也许是您用来帮助解决问题的步骤和版本。
    【解决方案5】:

    您可能希望将 jQuery 代码稍微修改为 '#demolist li a',以便它专门选择链接中的文本而不是 li 元素中的文本。这将允许您拥有一个子菜单而不会引起问题。此外,由于您专门选择 a 标签,您可以使用 $(this).text(); 访问它。

    $('#datebox li a').on('click', function(){
        //$('#datebox').val($(this).text());
        alert($(this).text());
    });
    

    【讨论】:

      【解决方案6】:

      效果很好。

      类别问题 苹果 香蕉 樱桃
      <input type="text" name="cat_q" id="cat_q">  
      
      $(document).ready(function(){
          $("#btn_cat div a").click(function(){
             alert($(this).text());
      
          });
      });
      

      【讨论】:

      • 也许应该将此评论作为编辑添加到答案中。
      【解决方案7】:

      试试这个代码

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

      它对我有用

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-11
        相关资源
        最近更新 更多