Javascript 如何展开和折叠显示和隐藏元素(筛选的div)的混合列表,而不显示隐藏的元素

Javascript 如何展开和折叠显示和隐藏元素(筛选的div)的混合列表,而不显示隐藏的元素,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我对编码基本上是新手,但是我有一长串的产品,我需要根据特定的标准加上一个show more/less函数进行筛选。问题是:1。当我筛选元素时,某些类别的项目少于默认设置2。如果显示的元素的总高度较短,我需要容器的高度来匹配该高度(我设置了最大高度,但当过滤器更改产品数量或我尝试展开列表以显示其他隐藏产品时,它不会增加)3.如果应用了过滤器,并且列表长度超过显示的默认长度,如果我使用该功能显示更多项目,则不属于该类别的隐藏元素将变为可见 这是实际的jquery脚本,html太长了,我不会完整发布它

我对编码基本上是新手,但是我有一长串的产品,我需要根据特定的标准加上一个show more/less函数进行筛选。问题是:1。当我筛选元素时,某些类别的项目少于默认设置2。如果显示的元素的总高度较短,我需要容器的高度来匹配该高度(我设置了最大高度,但当过滤器更改产品数量或我尝试展开列表以显示其他隐藏产品时,它不会增加)3.如果应用了过滤器,并且列表长度超过显示的默认长度,如果我使用该功能显示更多项目,则不属于该类别的隐藏元素将变为可见

这是实际的jquery脚本,html太长了,我不会完整发布它,但我会发布一个产品设置示例

jQuery脚本

$(document).ready(function() {
  var productList = $("#product_list:nth-child(3n+1):visible").height(); /*$("#product_list:nth-child(3n+1):visible").each(function(){productList += $(this).height();});*/
  var counter = 0;
  //filter functions
  $("ul#filters li a.button").click(function() {
    $("ul#filters li a.button").removeClass("active");
    $(this).addClass("active");

    if ($(this).hasClass("active") == true) {

      var act = $(this).attr("id");

      $(".product:not(#" + act + ")").fadeOut(800);
      $(".product#" + act + "").fadeIn(800);
      $(".products .product:nth-child(4n+1)").css("border-left-width", 0);
      $("#product_list:last-child:visible").css("border-right", "2px dashed #008140");

      if (act == "all") {
        $(".product").fadeIn(800);
      } else {
        if ($(".product:last:visible") >= $(".product:last")) {
          //$("#loadmore").css("display", "none");
          $(".product:last:visible").css("border-right", "2px dashed #008140");
        }
      }
    }
  });
  //show more -show less
  $("#loadmore").click(function showNext() {
    $("#product_list").animate({
      height: productList + 3000
    }, 800);
    $(".product:hidden:lt(20)").slideDown();
    $("#showless").css("display", "block");
    counter = counter + 20;
    productList = productList + 3000;

    if ($(".product:last").is(":visible")) {
      $("#product_list").css("max-height", (productList - 2300));
      $("#product_list:last-child:visible").css("border-right", "2px dashed #008140");
      $("#loadmore").css("display", "none");
    }
    if ($("."))
  });

  $("#showless").click(function showLess() {
    //$(".product:visible:gt("+(counter-1)+")").slideUp()
    $("#product_list").animate({
      height: productList - 3000
    }, 800);
    counter = counter - 20;
    productList = productList - 3000;

    if (productList == 3000) {
      $("#showless").css("display", "none");
    }
    if ($("#loadmore").css("display", "none")) {
      $("#loadmore").css("display", "block");
    }
  });
});
产品HTML

<div class="container">
  <!-- Row -->
  <div class="row" id="product_list">
    <!-- Product -->
    <div class="col-xs-6 col-sm-3 product" id="belleza">
      <!-- Entry -->
      <div class="entry">
        <figure class="entry-thumbnail">
          <a href="#"><img alt="" src="../resources/images/productos/Shampoo-neutro.png"/></a>
        </figure>
        <div class="entry-body">
          <h3 class="entry-title">
            <a href="#">Shampoo Petra Neutro<br/></a>
          </h3>
          <h2 class="entry-title">
            <select id="presentaciones">
              <option id="shampoo-neutro260">Frasco Dosificador x260ml</option>
            </select>
          </h2>
          <h2 class="entry-title" id="disponible">Disponibles: <span class="unidades" id="shampoo-neutro">10</span>
          </h2>
          <span class="price"><ins><span class="woocommerce-Price-amount amount"><span class="woocommerce-Price-currencySymbol">$</span>12.00</span></ins>
          <del><span class="woocommerce-Price-amount amount"><span class="woocommerce-Price-currencySymbol">$</span>15.00</span></del></span>
          <div class="buttons">
            <a class="button add_to_cart_button" rel="nofollow">Add to cart</a>
          </div>
        </div>
      </div>
      <!-- End Entry -->
    </div>
    <!--End Col -->
  </div>
</div>

Frasco剂量计x260ml
争议事项:10
$12.00
$15.00
添加到购物车

我重新格式化了你的JS,但是你的HTML对于我用来理解的在线工具来说不够有效。如果你想方便回答的话,你可能需要自己清理一下。事实上,它很难辨认。谢谢,我试着重新格式化了一点HTML,但是它对于上下文来说是非常有用的,我遇到的真正问题是javascript/j查询部分。@1252748