【问题标题】:How to count the number of elements on the first row of their parent element如何计算其父元素第一行的元素数量
【发布时间】:2014-10-15 19:30:35
【问题描述】:

我的问题是,有没有一种方法可以在 JavaScript 中确定有多少子元素将适合父元素的第一行?然后,我会将其乘以固定数量的行,并一次查询那么多行。

为了更好地理解发生了什么,如果我查询 20 个项目并且页面大小使得每行可以容纳 6 个元素,我将在最后一行留下两个空格。我想查询足够多的内容,以便最后一行没有空单元格。

页面在这里:http://www.spacerock.com/dvds.php

我正在尝试找出一种绝妙的方法来动态执行此操作,并根据页面大小调整数字。

【问题讨论】:

  • 这在技术上不是“响应式”,而只是“流动性”。如果您有断点来调整样式,则“响应式”将是。但无论如何,肯定只是containerWidth / itemWidth的一个案例?

标签: javascript jquery css ajax


【解决方案1】:

好吧,我想我现在更了解你了。试试这个代码。按原样运行并观察计数,然后进入全屏模式并再次运行。

$(document).ready(function(){
   
    function countFirstRowItems(parentSelector, childSelector){
        var count = 0, theTop = undefined;
        $(parentSelector + " > " + childSelector).each(function(){
            var thisTop = $(this).offset().top;
            if(theTop === undefined){
                theTop = thisTop;
            }
            if(thisTop != theTop){
                return false;
            }
            count++;
        });
        return count;
    }
    
    $('#btnCount').click(function(){
        $('#spnCount').html(
            countFirstRowItems('.outer', '.item')
        );
    });

    $('#spnCount').html(
        countFirstRowItems('.outer', '.item')
    );
    
});
.outer{
  padding:.5em;
  margin:.5em;
  box-shadow:inset 0px 0px 3px #aaa;
}
.item{
  margin:.5em;
  height:150px;
  width:100px;
  border:solid 1px #ddd;
  float:left;
  background-color:#fdfafa;
}
.clearfix{
  clear:both;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="btnCount">Count items on first row</button>
<span id="spnCount">?</span>
<div class='outer'>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
  <div class='item'></div>
  
  <div class='clearfix'></div>
</div>

【讨论】:

  • 我在幕后做的事情是分页。有一个查询一次显示 20 个,但这个数字可能会改变……根据宽度。它们向左浮动,当视口较窄时,不会连续显示那么多。我正在尝试做的是动态地使这些行均匀 - 每行将具有相同数量的项目(单元格)。我必须想出一种方法来更改我从数据库中查询的偏移量 - 动态 - 基于页面宽度可以在偶数行中显示多少。这说明清楚了吗?
  • 所以你不希望最后一行有空格?
  • 对。没有空格。
  • 如果我能找到一种方法来计算 .movi​​ecell 类的第一行,那么我可以进行 ajax 调用,使其从 db 中调出一个数字乘以有多少例如,第一行 x 4。
  • 查看我的新答案
猜你喜欢
  • 2011-03-09
  • 1970-01-01
  • 2015-04-18
  • 2021-03-23
  • 2014-11-05
  • 1970-01-01
  • 1970-01-01
  • 2014-07-08
  • 2019-09-07
相关资源
最近更新 更多