javascript - 是否可以检测我的 div 中的文本是否超过一行?

标签 javascript css html

<分区>

我有一个 div,其中包含一些文本,最初不换行并显示省略号,但我想让用户能够单击阅读更多选项,然后将 div 展开为显示整段文字。

但是我希望能够检测文本是否足够小以适合 div 而无需从一行展开它,如果是这样则隐藏显示更多选项。

这是我一直在研究的修改后的 JS Fiddle 的链接:

http://jsfiddle.net/M2APS/44/

以及其中的代码:

$(document).bind('pageshow', function() {
  $(".text-size").click(function() {
    $(".ui-li > div").toggleClass("less");
    if ($(".text-size").html() == "Read more...") {
      $(".text-size").html("Read less...");
    } else {
      $(".text-size").html("Read more...");
    }
  });
});
.less {
  word-wrap: break-word;
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
}

.more {
  white-space: normal;
}

.text-size {
  display: block;
  text-align: right;
  padding-top: 10px;
  color: blue !important;
  cursor: pointer;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div data-role="page" id="p1">
  <div data-role="content">
    <ul data-role="listview" data-inset="true">
      <li data-role="list-divider">Item Title</li>
      <li>
        <div class="less">
          Need to detect if this text is long enough to show the "Read More" if it is not don't
        </div>
        <div class="text-size">Read more...</div>
      </li>
    </ul>
  </div>

</div>

是否可以检测文本是否足够短以适合 div,然后隐藏阅读更多选项?

最佳答案

您可以比较 DIV widthscrollWidth 来检测文本是否溢出:

if ($('.less')[0].scrollWidth <= $('.less').width()) {
   $(".text-size").hide();
}

演示:http://jsfiddle.net/ygalanter/M2APS/50/

关于javascript - 是否可以检测我的 div 中的文本是否超过一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23743669/

相关文章:

javascript - 如何将以毫秒为单位的日期转换为 iso 格式的 javascript?

javascript - Angularjs ng-根据先前的值重复样式化

javascript - Firefox 在使用 JavaScript 动画的 Logo 上方添加了不需要的细线

javascript - Jquery each 和 Selector 的行为不同

javascript - Canvas 外导航 : How to make a second-level menu slide in on top of first-level menu without covering body text?

javascript - 从jquery获取多个值并将其发布到php

javascript - Jquery 设置计数器,但在调用函数时重置

javascript - 如何使用 jQuery 更改新创建元素的属性

css - 将 2 个 div 放在不同宽度的包装器中,而不固定第二个 div 的宽度

html - Bootstrap 导航栏元素在较小的屏幕上未正确对齐