javascript jQuery下拉过滤器仅返回一个结果

vsdwdz23  于 2023-02-11  发布在  Java
关注(0)|答案(1)|浏览(173)

我有一个显示事件信息的表。其中一列是"State",显示事件所在的州。我希望我的州下拉列表只过滤表中匹配的州。我的当前代码可以做到这一点,但它只返回最后一个匹配的州。我希望我的jQuery过滤器返回所有匹配的州。例如,如果我的表中有两个事件发生在德克萨斯州-如果我在下拉列表中选择德克萨斯州,则只返回其中一个事件。如何让它显示两个德克萨斯州事件?我肯定我错过了一些简单的信息。
我的代码我有一个典型的状态下拉html与所有状态,但这里有一个快速的例子,没有每一个状态:

$("#filter").change(function() {
  // console.clear();
  var filterValue = $(this).val();
  var row = $('.row-conventions');
  console.log(filterValue);

  row.each(function(i, el) {
    if ($(el).attr('data-type') == filterValue) {
      row.hide();
      $(el).show();
    }
  });

  if ("all" == filterValue) {
    row.show();
  }

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label>Select Your State:</label>
<select class="state" id="filter">
  <option value="all" selected="selected">Select a State</option>
  <option value="Alabama">Alabama</option>
  <option value="Alaska">Alaska</option>
</select>

我尝试将. each更新为. map,但没有成功。

qjp7pelc

qjp7pelc1#

$("#filter").change(function() {
            // console.clear();
            var filterValue = $(this).val();
            var row = $('.row-conventions');
            console.log(filterValue);
           
            row.hide();
            row.each(function(i, el) {
              if ($(el).attr('data-type') == filterValue) {
                $(el).show();
              }
            });

            if ("all" == filterValue) {
                row.show();
              }

            });

我只需要将row.hide()移出函数。

相关问题