【问题标题】:Check with jQuery if text is more than div height如果文本大于 div 高度,请使用 jQuery 检查
【发布时间】:2014-03-28 16:08:39
【问题描述】:

我有一个固定高度和固定宽度的容器。其中我还有两个div,一个是顶部,另一个是底部,宽度固定。如果顶部的高度增加底部 div 内的文本超出容器的高度,我不希望这样。 我想知道有多少文本超出了容器高度以及该文本是什么。 我想将该文本保存在变量中。

我写的 jQuery 代码:

var conheight = $("#container").height();
console.log("conheight",conheight);

var botheight = $("#bottom").height();
console.log("botheight",botheight);

var topheight = $("#top").height();
console.log("topheight",topheight);

var heightdiff = conheight - topheight;
console.log("heightdiff",heightdiff);

var bottext = $("#bottom").html();
console.log(bottext);

if ( bottext.length > heightdiff ) {
   console.log("exceeded");
   console.log(bottext.length);
}
else {
    console.log("within div");
}

我不知道在if 标签里面写什么。

这是我到目前为止所做的小提琴链接。

http://jsfiddle.net/nTHzS/

任何帮助将不胜感激。

【问题讨论】:

  • 当机顶盒即将超过限制时,您希望发生什么?得到一个滚动条?停止输出文本?将剩余的文本移动到底部的框中​​?
  • @haxxxton 不,我不想要滚动条...我想将该文本保存在变量中
  • 我建议看看this,它必须有某种算法来检测溢出的文本......
  • @Bartdude 我不想显示溢出的文本..我想将溢出的文本保存在变量中
  • 我完全理解了。我向您指出了一个方向,您可能会在其中找到帮助您识别溢出文本的代码。你接下来做什么取决于你。所以不要使用这个插件,而是看看它并提取你需要的部分代码。

标签: jquery


【解决方案1】:

如果您知道 div 的宽度和底部框的宽度是固定高度,您可以使用此解决方案的组合来检测溢出 https://stackoverflow.com/a/143889/648350 以及您在 .slice(-1).substring(0, text.length - 1) 的循环中逐渐删除div 中的字符,直到不再溢出为止

我提供了一个 jsFiddle http://jsfiddle.net/nTHzS/3/

我将测试文本更改为 Lorem Ipsum 以更清楚地显示“溢出”返回的内容

编辑:在http://jsfiddle.net/nTHzS/6/ 更新了我的 jsfiddle 解决方案,该解决方案根据进一步解释请求的评论讨论从底部框中提供溢出文本。此解决方案使用来自http://davidwalsh.name/detect-scrollbar-width 的内容来检测滚动条宽度和来自https://stackoverflow.com/a/143889/648350检测内容溢出

EDIT2:修复了我在 for 循环中引用错误长度的错误。添加了减少整个单词而不是单个字符的溢出的功能,以停止破坏单词http://jsfiddle.net/nTHzS/10/

EDIT3:添加了代码测量顶部和底部的能力,具体取决于顶部是否有比容器更多的文本。 http://jsfiddle.net/nTHzS/11/

【讨论】:

  • 所以顶部和底部的盒子都是可变高度的?而您只想知道顶部的文本框何时溢出?如果底部框的文本过多会怎样?你需要知道两个溢出的文本集吗?
  • No..我想要的是,如果顶部 div 中的文本增加,那么它将推动下面的 div,然后底部 div 中的文本如果溢出然后剪切该文本并将该文本保存在新变量中.顶部和底部div的高度都是可变的
  • 对.. 但是,如果两个框中的任何一个中的任何一个包含更多容器可以容纳的文本,会发生什么?在您的小提琴示例中.. 如果还有 30-40 'blah's 怎么办?您是否希望与“蓝色”底框的最后 1 行或 2 行一起返回?
  • 我不担心顶部 div...我只想要 bootom div 文本。
  • 是的...我检查了...但我不想显示溢出的文本..只需将文本剪切到容器高度...
猜你喜欢
  • 2023-03-26
  • 2021-07-25
  • 1970-01-01
  • 1970-01-01
  • 2011-12-01
  • 1970-01-01
  • 2018-04-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多