更新下拉按钮文本(不破坏<span>)?</span>

时间:2014-08-08 17:05:42

标签: javascript jquery html

一直在使用此下拉列表:

<div class="dropdown">
 <button class="btn btn-primary dropdown-toggle" data-toggle="dropdown">
   company
   <span class="caret"></span>
 </button>
 <ul class="dropdown-menu">
  <li><a href="#">google</a></li>
  <li><a href="#">apple</a></li>
  <li><a href="#">microsoft</a></li>
  <li><a href="#">facebook</a></li>
  <li><a href="#">adobe</a></li>
  <li class="divider"></li>
  <li><a href="#">other</a></li>
 </ul>
</div>

当有人点击其中一个选项时,我想将“公司”文本更新为所选选项。我能够使用$('#company')。text(' update goes here ');但是使用它会破坏下拉文本旁边的位置。关于这一个的任何指导?谢谢!

5 个答案:

答案 0 :(得分:0)

你应该.append值而不是.text这样:

  

$('#company')。append(new value);

或者您可以将其附加到范围

 $('#company span').append(new value);

答案 1 :(得分:0)

如果您使用的是jquery,则应该可以使用.html()来指定按钮文本的值。

<div class="dropdown">
<button class="btn btn-primary dropdown-toggle" data-toggle="dropdown"><span id="company-name">company</span><span class="caret"></span></button>
  <ul class="dropdown-menu">
    <li><a href="#">google</a></li>
    <li><a href="#">apple</a></li>
    <li><a href="#">microsoft</a></li>
    <li><a href="#">facebook</a></li>
    <li><a href="#">adobe</a></li>
    <li class="divider"></li>
    <li><a href="#">other</a></li>
  </ul>
</div>

为按钮添加了一个ID,然后使用jquery:

引用它
$("#company-name").html("company-name-here");

选择公司名称作为参数。

答案 2 :(得分:0)

只需将文字换成一个范围:

 <button class="btn btn-primary dropdown-toggle" data-toggle="dropdown">
   <span id="cie">company</span>
   <span class="caret"></span>
 </button>

然后更新范围的文本:

$('#cie').html('your text');

答案 3 :(得分:0)

将此添加到您的JavaScript代码中:

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

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

});

请参阅此fiddle

答案 4 :(得分:0)

如果您无法使用元素包装文本,

Demo

function getChildText(node) {
    var text = "";
    for (var child = node.firstChild; !! child; child = child.nextSibling) {
        if (child.nodeType === 3) {
            text += child.nodeValue;
        }
    }
    return text;
}

$(".btn-primary").click(function () {
    $(this).html($(this).html().replace(getChildText(this).trim(), "New Value"));
});