javascript - jQuery - 数组没有显示正确的值

标签 javascript jquery html css

我有一个带有复选框的 Bootstrap 下拉菜单,这是我的 html:

<div class="button-group">
    <button type="button" class="dropdown-search-btn" data-toggle="dropdown">Option 1</button>
    <ul class="dropdown-menu">
        <li><a href="#" class="small" data-value="Option 1" tabIndex="-1"><input type="checkbox" name="makeup"/><span></span>Option 1</a></li>
        <li><a href="#" class="small" data-value="Option 2" tabIndex="-1"><input type="checkbox" name="makeup"/><span></span>Option 2</a></li>
        <li><a href="#" class="small" data-value="Option 3" tabIndex="-1"><input type="checkbox" name="makeup"/><span></span>Option 3</a></li>
        <li><a href="#" class="small" data-value="Option 4" tabIndex="-1"><input type="checkbox" name="makeup"/><span></span>Option 4</a></li>
        <li><a href="#" class="small" data-value="Option 5" tabIndex="-1"><input type="checkbox" name="makeup"/><span></span>Option 5</a></li>
    </ul>
</div>

我的问题是我试图用下拉列表中当前选中的任何内容更改下拉按钮文本。

这是我的 jQuery,用于获取选中的复选框的值并将它们存储在数组中:

$(function(){
        $(".dropdown-menu li a").click(function(){
            var selection = [];
              $.each($("input[name='makeup']:checked"), function(){            
                    selection.push($(this).val());
                    $(".dropdown-search-btn").text(selection.join(", ")); 
              });
       });
    });

这似乎有效,它在控制台中显示了正确的值。但是,按钮文本未正确更改。例如,如果数组的值为“选项 1、选项 2、选项 3”,它将把按钮文本更改为“开、开、开”,而不是数组中的内容。在搜索并弄乱了几个小时之后,我失去了想法,我无法弄清楚为什么它没有输出正确的值。

如有任何帮助,我们将不胜感激。

最佳答案

如果缺少 value 属性,则选中复选框的默认值为“on”。

你想要的是它的父 anchor 的文本,你可以这样得到:

$.each($("input[name='makeup']:checked"), function() {
  selection.push($(this).parent().text());
});
$(".dropdown-search-btn").text(selection.join(", "));

片段:

$(function() {
  $(".dropdown-menu li a").click(function() {
    var selection = [];
    $.each($("input[name='makeup']:checked"), function() {
      selection.push($(this).parent().text());
    });
    $(".dropdown-search-btn").text(selection.join(", "));
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="button-group">
  <button type="button" class="dropdown-search-btn" data-toggle="dropdown"></button>
  <ul class="dropdown-menu">
    <li>
      <a href="#" class="small" data-value="Option 1" tabIndex="-1">
        <input type="checkbox" name="makeup" /><span></span>Option 1</a>
    </li>
    <li>
      <a href="#" class="small" data-value="Option 2" tabIndex="-1">
        <input type="checkbox" name="makeup" /><span></span>Option 2</a>
    </li>
    <li>
      <a href="#" class="small" data-value="Option 3" tabIndex="-1">
        <input type="checkbox" name="makeup" /><span></span>Option 3</a>
    </li>
    <li>
      <a href="#" class="small" data-value="Option 4" tabIndex="-1">
        <input type="checkbox" name="makeup" /><span></span>Option 4</a>
    </li>
    <li>
      <a href="#" class="small" data-value="Option 5" tabIndex="-1">
        <input type="checkbox" name="makeup" /><span></span>Option 5</a>
    </li>
  </ul>
</div>

关于javascript - jQuery - 数组没有显示正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33769065/

相关文章:

c# - 如何维护在 Web 表单上输入/选择的数据而不保存它

javascript - 谷歌地图 react : Open InfoWindow by Default - not from onClick

javascript - 错误 : The shape of dict ['input' ] provided in model.execute(dict) 必须是 [1,224,224,3],但实际上是 [1,244,244,3]

javascript - FormArray 无效但不包含错误

javascript - 如何调整 html2canvas 的大小并缩放到原始的 100% 分辨率?

javascript - 从动态表mysql php获取值

javascript - 是否可以在 css 中按下并按住按钮触发事件?

java - Android TextView 的 HTML 中的换行符

javascript - 如何在加载页面时单击按钮并获取其参数值

javascript - 如何使用 jQuery 在输入中用逗号替换换行符?