javascript - Jquery else if 语句似乎不起作用

标签 javascript jquery

<分区>

我有一个 else if 语句,它根据 div 中的字符数显示或隐藏阅读更多按钮。

实际的 if 语句似乎有效 - 它删除了阅读更多按钮,但 else if 似乎不起作用。

我的代码如下

$('.hotel-copy').each(function () {
    if ($(".sidebar-box").length < 194) {  // if count is less than 193
        $(".read-more").hide();
    }
    else if ($(".sidebar-box").length > 194) {  // if count is greater than 193
        $(".read-more").show();
    }
});

HTML

<div class="hotel-copy">
   <div class="sidebar-box">
      @if (!string.IsNullOrWhiteSpace(hotel.Description))
         {
            <p>@hotel.Description</p>
            <p class="read-more"><a href="javascript:void(0);" class="button">Read more</a></p>
          }
    </div>
 </div>

CSS

/* READ MORE */
.accommodation-container .sidebar-box {
    height: 120px;
    position: relative;
    overflow: hidden;
}

    .accommodation-container .sidebar-box .read-more {
        position: absolute;
        bottom: 0px;
        left: 0;
        width: 100%;
        /* text-align: center; */
        margin: 0;
        padding: 20px 0 0px 0;
        background-image: linear-gradient(to top, #f7f7f7, #f7f7f7);
    }

如有任何帮助,我们将不胜感激。

谢谢

最佳答案

如果要检查元素内文本的字符数,请使用 text().length。 jQuery 对象的 length 属性(正如您最初使用的那样)用于检索与您使用的选择器相匹配的集合中包含的元素数。

另请注意,您可以通过向 toggle() 提供 bool 值而不是单独的 show()/hide() 来缩短逻辑> 调用:

$('.hotel-copy').each(function () {
  $('.read-mode').toggle($(".sidebar-box").text().length >= 194);
});

最后,我将运算符修改为 >=,因为当文本的长度刚好为 194 个字符时,您没有涵盖任何情况。

关于javascript - Jquery else if 语句似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50834978/

相关文章:

javascript - Laravel 中的 Ajax

javascript - 通过 Ajax 将页面加载到 Div 最佳实践?

javascript - 去掉 for-in 语句

javascript - Onclick 播放多个视频的 Jquery 触发器

jquery - BackboneJS 单页站点 : Attaching and Cleaning Up Views

php - 传递 Javascript 数组 -> PHP

javascript - 如何在回调中访问正确的“this”?

javascript - 使用过滤器时ng-repeat绝对$index

javascript - Jquery attr 方法在 'onMouseEnter' 上不起作用

javascript - jQuery 在使用 ajax 验证后提交表单