【问题标题】:Component button to show 'n' number of div elements initially, then show 'n' number more elements组件按钮最初显示“n”个 div 元素,然后显示“n”个更多元素
【发布时间】:2017-01-31 20:11:08
【问题描述】:

我正在尝试找到一个组件类/按钮,它最初会显示“n”个 div 元素,然后每次单击按钮时都会显示“n”个更多元素,直到没有更多 div 元素显示。

我正在使用ASP.NET MVC,所以我有一个元素列表进入我的视图并通过 for 循环显示。我之前使用了一个 jQuery 滑块组件来进行其他操作,以使用左/右拖动滚动功能和单击箭头的给定功能连续显示 n 个元素。我能找到一个 jQuery 组件还是必须编写自己的 Javascript?

我尝试了以下方法:

这是我的 HTML:

<div class="row whiteBG">
        @foreach (var item in Model.Products)
        {
            <div id="special-products" class="col-sm-3 align-centre">

                @Html.Image(item.ByteImage, item.Name, "128")
                <div class="blend-box category-head" style="background: #323232 url(@Html.ImageSrc(item.ByteImage)) no-repeat 50% 100%;">
                    <div class="item-container">

                        <div class="desc-plus-products">
                            <p>@item.Name</p>
                            <p>@item.Price</p>
                        </div>
                    </div>
                </div>
            </div>
        }
    </div>

<div class="row whiteBG">
    <div class="see-all-image" onclick="SeeMoreProducts()">
        <img src="~/Content/Images/seeAll.jpg" alt="See all items :)" />
    </div>
</div>

我正在尝试将点击功能添加到我的图像 div 并包含 onclick"SeeMoreProducts()" function

这是我的 JS:

<script>
    $(document).ready(function SeeMoreProducts() {
        $("#special-products:lt(5)").show();
    });
</script>

【问题讨论】:

    标签: javascript jquery html css


    【解决方案1】:

    使用.slice 来实现这一点并在html 中使用.on 事件绑定而不是onClick

    var showItem = 5;  // Your desire number of item to show each time
    var counter = 1;
    $(function() {
      var $box = $('.blend-box');
      $box.slice(showItem).hide();
      $('.see-all-image').on('click', function() {
        $box.slice(0, showItem * counter + showItem).show();
        counter++;
      })
    });
    

    var showItem = 5;  // Your desire number of item to show each time
    var counter = 1;
    $(function() {
      var $box = $('.blend-box');
      $box.slice(showItem).hide();
      $('.see-all-image').on('click', function() {
        console.log(showItem * counter + showItem);
        $box.slice(0, showItem * counter + showItem).show();
        counter++;
      })
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="row whiteBG">
    
      <div id="special-products" class="col-sm-3 align-centre">
        <div class="blend-box category-head" style="background: #323232 url(@Html.ImageSrc(item.ByteImage)) no-repeat 50% 100%;">
          <div class="item-container">
    
            <div class="desc-plus-products">
              <p>@item.Name</p>
              <p>@item.Price</p>
            </div>
          </div>
        </div>
        <div class="blend-box category-head" style="background: #323232 url(@Html.ImageSrc(item.ByteImage)) no-repeat 50% 100%;">
          <div class="item-container">
    
            <div class="desc-plus-products">
              <p>@item.Name</p>
              <p>@item.Price</p>
            </div>
          </div>
        </div>
        <div class="blend-box category-head" style="background: #323232 url(@Html.ImageSrc(item.ByteImage)) no-repeat 50% 100%;">
          <div class="item-container">
    
            <div class="desc-plus-products">
              <p>@item.Name</p>
              <p>@item.Price</p>
            </div>
          </div>
        </div>
        <div class="blend-box category-head" style="background: #323232 url(@Html.ImageSrc(item.ByteImage)) no-repeat 50% 100%;">
          <div class="item-container">
    
            <div class="desc-plus-products">
              <p>@item.Name</p>
              <p>@item.Price</p>
            </div>
          </div>
        </div>
        <div class="blend-box category-head" style="background: #323232 url(@Html.ImageSrc(item.ByteImage)) no-repeat 50% 100%;">
          <div class="item-container">
    
            <div class="desc-plus-products">
              <p>@item.Name</p>
              <p>@item.Price</p>
            </div>
          </div>
        </div>
        <div class="blend-box category-head" style="background: #323232 url(@Html.ImageSrc(item.ByteImage)) no-repeat 50% 100%;">
          <div class="item-container">
    
            <div class="desc-plus-products">
              <p>@item.Name</p>
              <p>@item.Price</p>
            </div>
          </div>
        </div>
        <div class="blend-box category-head" style="background: #323232 url(@Html.ImageSrc(item.ByteImage)) no-repeat 50% 100%;">
          <div class="item-container">
    
            <div class="desc-plus-products">
              <p>@item.Name</p>
              <p>@item.Price</p>
            </div>
          </div>
        </div>
        <div class="blend-box category-head" style="background: #323232 url(@Html.ImageSrc(item.ByteImage)) no-repeat 50% 100%;">
          <div class="item-container">
    
            <div class="desc-plus-products">
              <p>@item.Name</p>
              <p>@item.Price</p>
            </div>
          </div>
        </div>
        <div class="blend-box category-head" style="background: #323232 url(@Html.ImageSrc(item.ByteImage)) no-repeat 50% 100%;">
          <div class="item-container">
    
            <div class="desc-plus-products">
              <p>@item.Name</p>
              <p>@item.Price</p>
            </div>
          </div>
        </div>
        <div class="blend-box category-head" style="background: #323232 url(@Html.ImageSrc(item.ByteImage)) no-repeat 50% 100%;">
          <div class="item-container">
    
            <div class="desc-plus-products">
              <p>@item.Name</p>
              <p>@item.Price</p>
            </div>
          </div>
        </div>
        <div class="blend-box category-head" style="background: #323232 url(@Html.ImageSrc(item.ByteImage)) no-repeat 50% 100%;">
          <div class="item-container">
    
            <div class="desc-plus-products">
              <p>@item.Name</p>
              <p>@item.Price</p>
            </div>
          </div>
        </div>
        <div class="blend-box category-head" style="background: #323232 url(@Html.ImageSrc(item.ByteImage)) no-repeat 50% 100%;">
          <div class="item-container">
    
            <div class="desc-plus-products">
              <p>@item.Name</p>
              <p>@item.Price</p>
            </div>
          </div>
        </div>
        <div class="blend-box category-head" style="background: #323232 url(@Html.ImageSrc(item.ByteImage)) no-repeat 50% 100%;">
          <div class="item-container">
    
            <div class="desc-plus-products">
              <p>@item.Name</p>
              <p>@item.Price</p>
            </div>
          </div>
        </div>
        <div class="blend-box category-head" style="background: #323232 url(@Html.ImageSrc(item.ByteImage)) no-repeat 50% 100%;">
          <div class="item-container">
    
            <div class="desc-plus-products">
              <p>@item.Name</p>
              <p>@item.Price</p>
            </div>
          </div>
        </div>
        <div class="blend-box category-head" style="background: #323232 url(@Html.ImageSrc(item.ByteImage)) no-repeat 50% 100%;">
          <div class="item-container">
    
            <div class="desc-plus-products">
              <p>@item.Name</p>
              <p>@item.Price</p>
            </div>
          </div>
        </div>
        <div class="blend-box category-head" style="background: #323232 url(@Html.ImageSrc(item.ByteImage)) no-repeat 50% 100%;">
          <div class="item-container">
    
            <div class="desc-plus-products">
              <p>@item.Name</p>
              <p>@item.Price</p>
            </div>
          </div>
        </div>
      </div>
    
    </div>
    
    <div class="row whiteBG">
      <div class="see-all-image" onclick="">
        <img src="~/Content/Images/seeAll.jpg" alt="See all items :)" />
      </div>
    </div>
    I am trying to add click functionality to my image div and have included an onclick"SeeMoreProducts()" function. This is my JS:

    【讨论】:

    • 谢谢。由于我的元素是在 for 循环中一个接一个地加载的,因此它仅适用于我加载的第一个元素。因此,当我将 showItem 更改为“0”并将 $box.slice 的第二个参数更改为“2”时,该按钮用于显示第一个元素。其他元素都是可见的。
    • 哦,我试图将 box 变量的参数分配给我的 id,var $box = $('#special-products'); - 但我意识到这不允许将 JavaScript 应用于多个元素,因为这是类的用途。再次感谢帕韦斯!如何让 JavaScript 变得更好?
    • @aladdin786 勇敢一点。
    猜你喜欢
    • 1970-01-01
    • 2011-12-16
    • 1970-01-01
    • 2013-12-05
    • 1970-01-01
    • 2016-05-21
    • 1970-01-01
    • 2019-01-30
    • 1970-01-01
    相关资源
    最近更新 更多