如何在Bootstrap按钮下拉标题中显示所选项目

Suf*_*fii 155 jquery twitter-bootstrap

我在我的应用程序中使用bootstrap Dropdown组件,如下所示:

<div class="btn-group">
    <button class="btn">Please Select From List</button>
    <button class="btn dropdown-toggle" data-toggle="dropdown">
        <span class="caret"></span>
    </button>
    <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu">
       <li><a tabindex="-1" href="#">Item I</a></li>
       <li><a tabindex="-1" href="#">Item II</a></li>
       <li><a tabindex="-1" href="#">Item III</a></li>
       <li class="divider"></li>
       <li><a tabindex="-1" href="#">Other</a></li>
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

我想将所选项目显示为btn标签.换句话说,将"请从列表中选择"替换为已选择的列表项("项目I","项目II","项目III").

Jai*_*Jai 151

据我所知,您的问题是您想要通过点击链接文本来更改按钮的文本,如果是这样,您可以尝试这个:http://jsbin.com/owuyix/4/edit

 $(function(){

    $(".dropdown-menu li a").click(function(){

      $(".btn:first-child").text($(this).text());
      $(".btn:first-child").val($(this).text());

   });

});
Run Code Online (Sandbox Code Playgroud)

根据你的评论:

当我<li>通过ajax调用填充列表项时,这对我不起作用.

所以你必须使用.on()jQuery方法将事件委托给最近的静态父级:

 $(function(){

    $(".dropdown-menu").on('click', 'li a', function(){
      $(".btn:first-child").text($(this).text());
      $(".btn:first-child").val($(this).text());
   });

});
Run Code Online (Sandbox Code Playgroud)

此处事件被委托给静态父级$(".dropdown-menu"),尽管您也可以将事件委托给$(document)它,因为它始终可用.

  • 嗨Behseini,这个"$(function(){});" 等同于"$(document).ready(function(){});" 你可以在这里找到更多信息:http://api.jquery.com/ready/ (2认同)
  • 这是解决方案,这看起来不是有点奇怪吗? (2认同)

cmc*_*loh 138

更新了Bootstrap 3.3.4:

这将允许您为每个元素提供不同的显示文本和数据值.它也将坚持选择的插入符号.

JS:

$(".dropdown-menu li a").click(function(){
  $(this).parents(".dropdown").find('.btn').html($(this).text() + ' <span class="caret"></span>');
  $(this).parents(".dropdown").find('.btn').val($(this).data('value'));
});
Run Code Online (Sandbox Code Playgroud)

HTML:

<div class="dropdown">
  <button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
    Dropdown
    <span class="caret"></span>
  </button>
  <ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
    <li><a href="#" data-value="action">Action</a></li>
    <li><a href="#" data-value="another action">Another action</a></li>
    <li><a href="#" data-value="something else here">Something else here</a></li>
    <li><a href="#" data-value="separated link">Separated link</a></li>
  </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

JS小提琴示例

  • 在添加@cincplug建议的更改后,这应该是接受的答案.此外,如果你想在按钮的文本上保持向下插入符号,你需要使用.html而不是.text并将span连接到`$(this).text()`. (7认同)
  • Bootstrap 3.3.4更新:父母(".input-group-btn")需要替换为父母(".downdown") (4认同)
  • 我建议将 `$(this).parents(".dropdown").find('.btn')` 存储在一个变量中,而不是让 jquery 遍历 DOM 两次。 (3认同)

Kyl*_*man 28

我能够稍微改善Jai的工作答案,如果你有一个以上的按钮下拉,并且有一个非常好的演示文稿,它与bootstrap 3配合使用:

按钮的代码

<div class="btn-group">
  <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
    Option: <span class="selection">Option 1</span><span class="caret"></span>
  </button>
  <ul class="dropdown-menu" role="menu">
    <li><a href="#">Option 1</a></li>
    <li><a href="#">Option 2</a></li>
    <li><a href="#">Option 3</a></li>
  </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

JQuery代码段

$(".dropdown-menu li a").click(function(){

  $(this).parents(".btn-group").find('.selection').text($(this).text());
  $(this).parents(".btn-group").find('.selection').val($(this).text());

});
Run Code Online (Sandbox Code Playgroud)

我还为"选择"类增加了一个5px的边距权限.


Hit*_*eeb 9

使用多个下拉列表的另一种简单方法(Bootstrap 4)

    $('.dropdown-item').on('click',  function(){
        var btnObj = $(this).parent().siblings('button');
        $(btnObj).text($(this).text());
        $(btnObj).val($(this).text());
    });
Run Code Online (Sandbox Code Playgroud)


Won*_*Boy 7

这个可以在同一页面中的多个下拉列表中工作.此外,我在所选项目上添加了插入符号:

    $(".dropdown-menu").on('click', 'li a', function(){
        $(this).parent().parent().siblings(".btn:first-child").html($(this).text()+' <span class="caret"></span>');
        $(this).parent().parent().siblings(".btn:first-child").val($(this).text());
    });
Run Code Online (Sandbox Code Playgroud)


Man*_*pka 7

这个单一的jQuery函数将满足您的所有需求.

$( document ).ready(function() {
    $('.dropdown').each(function (key, dropdown) {
        var $dropdown = $(dropdown);
        $dropdown.find('.dropdown-menu a').on('click', function () {
            $dropdown.find('button').text($(this).text()).append(' <span class="caret"></span>');
        });
    });
});
Run Code Online (Sandbox Code Playgroud)


Osk*_*kar 6

这是我的这个版本,我希望可以节省你的一些时间:)

在此输入图像描述 jQuery PART:

$(".dropdown-menu").on('click', 'li a', function(){
  var selText = $(this).children("h4").html();


 $(this).parent('li').siblings().removeClass('active');
    $('#vl').val($(this).attr('data-value'));
  $(this).parents('.btn-group').find('.selection').html(selText);
  $(this).parents('li').addClass("active");
});
Run Code Online (Sandbox Code Playgroud)

HTML部分:

<div class="container">
  <div class="btn-group">
    <a class="btn btn-default dropdown-toggle btn-blog " data-toggle="dropdown" href="#" id="dropdownMenu1" style="width:200px;"><span class="selection pull-left">Select an option </span> 
      <span class="pull-right glyphiconglyphicon-chevron-down caret" style="float:right;margin-top:10px;"></span></a>

     <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1">
       <li><a href="#" class="" data-value=1><p> HER Can you write extra text or <b>HTLM</b></p> <h4> <span class="glyphicon glyphicon-plane"></span>  <span> Your Option 1</span> </h4></a>  </li>
       <li><a href="#" class="" data-value=2><p> HER Can you write extra text or <i>HTLM</i> or some long long long long long long long long long long text </p><h4> <span class="glyphicon glyphicon-briefcase"></span> <span>Your Option 2</span>  </h4></a>
      </li>
      <li class="divider"></li>
   <li><a href="#" class="" data-value=3><p> HER Can you write extra text or <b>HTLM</b> or some </p><h4> <span class="glyphicon glyphicon-heart text-danger"></span> <span>Your Option 3</span>  </h4></a>
      </li>
    </ul>
  </div>
  <input type="text" id="vl" />
</div>  
Run Code Online (Sandbox Code Playgroud)


Nul*_*teя 5

你需要使用add class openin <div class="btn-group open">

li补充说class="active"