如何使用jQuery从下拉列表无序列表中获取文本值?

时间:2016-03-18 03:35:00

标签: javascript jquery html

这是无序列表:

<ul id="all-categories" class="categories-list nav nav-tabs text-center">
 <li class="category" >
     <a class="dropdown-toggle" data-toggle="dropdown" href="#">Liquor</a>
         <ul id="liquor-category" class="dropdown-menu">
            <li><a href="#">Bourbon</a></li>
            <li><a href="#">Gin</a></li>
            <li><a href="#">Rum</a></li>
            <li><a href="#">Tequila</a></li> 
            <li><a href="#">Vodka</a></li> 
            <li><a href="#">Whiskey</a></li>  
          </ul>


  </li>
   ...
</ul

这是我用来获取文本并在页面的其他位置用作标签的代码:

var liquor_selected  = document.querySelector('#liquor-category');
      var selected = liquor_selected.addEventListener('click',function(e){
          document.getElementById("category-name-box").innerHTML = "Liquor Sub-Category Here";
      });

它打印通用文本,但我希望它能打印子类别。请帮助。

2 个答案:

答案 0 :(得分:3)

点击处理程序绑定到父级,因此您必须找到单击的e.target:

var liquor_selected = document.querySelector('#liquor-category');
var selected = liquor_selected.addEventListener('click', function (e) {
  document.getElementById("category-name-box").innerHTML = e.target.innerText;
});

在jQuery中你也可以这样做:

$('#liquor-category').on('click', function (e) {
  $('#category-name-box').text($(e.target).text());
});

或者你可以在jQuery中更容易地绑定到a选择器

$('#liquor-category a').on('click', function (e) {
  $('#category-name-box').text($(this).text());
});

答案 1 :(得分:0)

我假设你想要实现以下(在jQuery中)

JsFiddle中的示例:https://jsfiddle.net/282u8avw/

HTML:

          <ul id="liquor-category" class="dropdown-menu">
            <li><a href="#">Bourbon</a></li>
            <li><a href="#">Gin</a></li>
            <li><a href="#">Rum</a></li>
            <li><a href="#">Tequila</a></li> 
            <li><a href="#">Vodka</a></li> 
            <li><a href="#">Whiskey</a></li>  
          </ul>
          <div id="category-name-box">

          </div>

的Javascript / jQuery的:

  $(document).ready(function() {
    $('#liquor-category a').click(function() {
      $('#category-name-box').text($(this).text());
    });
  })