javascript - if 小于 on .length 的条件不能精确工作

标签 javascript jquery html

我制作了一个脚本,其中 #hsz-wrap2 附加到最后一个可见的 div,当 div 数量低于或等于 16#snapshot_vertical div 内。

但是,if 条件的工作方式我不明白。

添加第 16 个 div 时,代码片段中的 div 不应出现!

为什么会发生这种情况?我缺少什么?

jQuery(document).ready(function($) {

  $('#snapshot_vertical > div').hide();
  $('#snapshot_vertical > div:lt(16)').show();


  $("#snapshot_vertical").append('<div style="font-size: 16px;text-align: center" id="hsz-wrap2"><span style="display: block;" id="megtobb-hsz2">Mégtöbb termék</span><br/><i class="fa fa-angle-down" aria-hidden="true"></i><br/><span>Összesen még ' + ($("#snapshot_vertical > div").filter(":hidden").size()) + ' termék </span></div>');

  if ($('#snapshot_vertical > div').length <= 16) {

    $('#snapshot_vertical > div').show();
    $('#hsz-wrap2').hide();

  }
  $('#hsz-wrap2').click(function() {
    $('#snapshot_vertical > div').show();
    $(this).hide();
  });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="snapshot-list-container">
  <div class="snapshot_vertical list grid-style list_with_divs" id="snapshot_vertical">
    <div class="product-snapshot list_div_item">1.</div>
    <div class="product-snapshot list_div_item">2.</div>
    <div class="product-snapshot list_div_item">3.</div>
    <div class="product-snapshot list_div_item">4.</div>
    <div class="product-snapshot list_div_item">5.</div>
    <div class="product-snapshot list_div_item">6.</div>
    <div class="product-snapshot list_div_item">7.</div>
    <div class="product-snapshot list_div_item">8.</div>
    <div class="product-snapshot list_div_item">9.</div>
    <div class="product-snapshot list_div_item">10.</div>
    <div class="product-snapshot list_div_item">11.</div>
    <div class="product-snapshot list_div_item">12.</div>
    <div class="product-snapshot list_div_item">13.</div>
    <div class="product-snapshot list_div_item">14.</div>
    <div class="product-snapshot list_div_item">15.</div>
    <!--<div class="product-snapshot list_div_item">16.</div>--><!-- if you put this in the hsz-wrap2 appears, which is not normal (?) -->
  </div>
</div>

最佳答案

您在计算 div 长度之前附加了 id="hsz-wrap2" div ..所以您的 16 个 div + 附加的 div = 17 而不是 16 .. 您可以在附加 div 之前获取 div 长度,如下所示

jQuery(document).ready(function($) {

  $('#snapshot_vertical > div').hide();
  $('#snapshot_vertical > div:lt(16)').show();
  var length = $('#snapshot_vertical > div').length;

  $("#snapshot_vertical").append('<div style="font-size: 16px;text-align: center" id="hsz-wrap2"><span style="display: block;" id="megtobb-hsz2">Mégtöbb termék</span><br/><i class="fa fa-angle-down" aria-hidden="true"></i><br/><span>Összesen még ' + ($("#snapshot_vertical > div").filter(":hidden").size()) + ' termék </span></div>');
	//alert($('#snapshot_vertical > div').length);
  if (length <= 16) {

    $('#snapshot_vertical > div').show();
    $('#hsz-wrap2').hide();

  }
  $('#hsz-wrap2').click(function() {
    $('#snapshot_vertical > div').show();
    $(this).hide();
  });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="snapshot-list-container">
  <div class="snapshot_vertical list grid-style list_with_divs" id="snapshot_vertical">
    <div class="product-snapshot list_div_item">1.</div>
    <div class="product-snapshot list_div_item">2.</div>
    <div class="product-snapshot list_div_item">3.</div>
    <div class="product-snapshot list_div_item">4.</div>
    <div class="product-snapshot list_div_item">5.</div>
    <div class="product-snapshot list_div_item">6.</div>
    <div class="product-snapshot list_div_item">7.</div>
    <div class="product-snapshot list_div_item">8.</div>
    <div class="product-snapshot list_div_item">9.</div>
    <div class="product-snapshot list_div_item">10.</div>
    <div class="product-snapshot list_div_item">11.</div>
    <div class="product-snapshot list_div_item">12.</div>
    <div class="product-snapshot list_div_item">13.</div>
    <div class="product-snapshot list_div_item">14.</div>
    <div class="product-snapshot list_div_item">15.</div>
    <div class="product-snapshot list_div_item">16.</div>
  </div>
</div>

关于javascript - if 小于 on .length 的条件不能精确工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42455998/

相关文章:

javascript - 将 PDF 文件存储在 JS 变量中

javascript - 我怎样才能在 chrome 扩展弹出窗口中嵌入网站

javascript - 如何在html5中检查音频文件是否存在

jquery - 可编辑编辑而不会在编辑过程中丢失样式?

magento - 将 magento 购物车 block 加载到下拉面板

javascript - 如何在 Reactjs 中从另一个组件触发状态

javascript - 显示剩余内容 - DIV 溢出 : hidden

php - 登录系统无法正常工作 - 错误的字符串输出

html - 如何为某些类用另一个替换 CSS 规则?

javascript - 使用 webpack 和 babel-loader 的 ES6 模块导入导出