由于使用css控制文字只显示多行,超出部分显示省略号,存在一定的兼容性问题,所以总结了一下网上一些大咖使用js实现控制行数的解决方案。

第一步:依次引入jquery.js+jquery.ellipsis.js+jquery.ellipsis.unobtrusive.js。

(1)jquery.js源代码下载  http://jquery.com/

(2)jquery.ellipsis.js   源代码

可以通过该部分修改默认的行数,修改row的值即可。

(function($) {
$.fn.ellipsis = function(options) { // default option
var defaults = {
'row' :2, // show rows
'onlyFullWords': false, // set to true to avoid cutting the text in the middle of a word
'char' : '...', // ellipsis
'callback': function() {},
'position': 'tail' // middle, tail
}; options = $.extend(defaults, options); this.each(function() {
// get element text
var $this = $(this);
var text = $this.text();
var origText = text;
var origLength = origText.length;
var origHeight = $this.height(); // get height
$this.text('a');
var lineHeight = parseFloat($this.css("lineHeight"), 10);
var rowHeight = $this.height();
var gapHeight = lineHeight > rowHeight ? (lineHeight - rowHeight) : 0;
var targetHeight = gapHeight * (options.row - 1) + rowHeight * options.row; if (origHeight <= targetHeight) {
$this.text(text);
options.callback.call(this);
return;
} var start = 1, length = 0;
var end = text.length; if(options.position === 'tail') {
while (start < end) { // Binary search for max length
length = Math.ceil((start + end) / 2); $this.text(text.slice(0, length) + options['char']); if ($this.height() <= targetHeight) {
start = length;
} else {
end = length - 1;
}
} text = text.slice(0, start); if (options.onlyFullWords) {
text = text.replace(/[\u00AD\w\uac00-\ud7af]+$/, ''); // remove fragment of the last word together with possible soft-hyphen characters
}
text += options['char']; }else if(options.position === 'middle') { var sliceLength = 0;
while (start < end) { // Binary search for max length
length = Math.ceil((start + end) / 2);
sliceLength = Math.max(origLength - length, 0); $this.text(
origText.slice(0, Math.floor((origLength - sliceLength) / 2)) +
options['char'] +
origText.slice(Math.floor((origLength + sliceLength) / 2), origLength)
); if ($this.height() <= targetHeight) {
start = length;
} else {
end = length - 1;
}
} sliceLength = Math.max(origLength - start, 0);
var head = origText.slice(0, Math.floor((origLength - sliceLength) / 2));
var tail = origText.slice(Math.floor((origLength + sliceLength) / 2), origLength); if (options.onlyFullWords) {
// remove fragment of the last or first word together with possible soft-hyphen characters
head = head.replace(/[\u00AD\w\uac00-\ud7af]+$/, '');
} text = head + options['char'] + tail;
} $this.text(text); options.callback.call(this);
}); return this;
};
}) (jQuery);

(3)jquery.ellipsis.unobtrusive.js源代码

(function ($) {
var $ellipsis = $.fn.ellipsis; $ellipsis.unobtrusive = { parseElement: function (element) {
var $element = $(element);
var maxWidth = $element.data('ellipsis-max-width');
maxWidth = maxWidth ? parseInt(maxWidth) : 0;
var maxLine = $element.data('ellipsis-max-line');
maxLine = maxLine ? parseInt(maxLine) : 1;
$element.ellipsis({ maxWidth: maxWidth, maxLine: maxLine });
}, parse: function (selector) {
$(selector).find("[data-ellipsis=true]").each(function () {
$ellipsis.unobtrusive.parseElement(this);
});
}
}; $(function () {
var beginAt = new Date;
if($ellipsis.debug){
console.log(beginAt);
} $ellipsis.unobtrusive.parse(document); if($ellipsis.debug){
var endAt = new Date;
console.log(endAt);
console.log(endAt - beginAt);
}
});
}(jQuery));

第二步:需要一个装载内容的容器,并在其上添加属性data-toggle="popover",data-ellipsis="true",data-toggle的值可以定义成其他的值,只需后续与调用的js保持一致即可,例如、

 <div style="width:400px">
      <p class="aptitude-title"  data-toggle="popover" data-ellipsis="true">JS控制文字只显示两行,超出部分显示省略号。</p>
</div> 

建议添加一个外层容器,同时添加一个固定宽度。

第三步:调用方法

   $(function () {
$("[data-toggle='popover']").popover();
});

代码搬运,记录过程,便于后续的工作和学习。

JS控制文字只显示两行,超出部分显示省略号的更多相关文章

  1. css文本强制两行超出就显示省略号,不显示省略号

    1. 强制一行的情况很简单 overflow:hidden; //超出的隐藏 text-overflow:ellipsis; //省略号 white-space:nowrap; //强制一行显示 2. ...

  2. css设置一行显示,超出部分显示...

    碰到一些介绍时候需要一行显示,然后超出部分用...替代 white-space: nowrap;不换行显示text-overflow: ellipsis;以...显示overflow: hidden; ...

  3. CSS控制文字只显示一行 超出部分显示省略号

         <p style="width: 120px; height: 50px; border: 1px solid blue; white-space: nowrap; over ...

  4. CSS控制文字只显示一行,超出部分显示省略号

    <p style="width: 300px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;"&g ...

  5. 电力项目七--js控制文字内容过长的显示和文本字数的显示

    当文本框中文字内容过长时,需要调整显示的样式 如上图所示的样式 对应的代码为: <div id="showInfomation" style="visibility ...

  6. div 只显示两行超出部分隐藏

    ; -webkit-box-orient: vertical;line-height: 26px } <td rowspan="2" colspan="2" ...

  7. js控制表格单双行颜色交替显示

    <script language="JavaScript"> window.onload = function() { var Table=document.getEl ...

  8. JS控制文字一个一个出现

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. js控制滚动条在内容更新超出时自动滚到底部

    //滚动条在内容更新时自动滚到底部var message = document.getElementById('message');message.scrollTop = message.scroll ...

随机推荐

  1. EXC_BAD_ACCESS(code...)坏内存访问 调试

    一般很多人遇到这个 都会崩溃 断点一般 找不到 原因 :  只能按照一步一步走readView的模式 : 一般是问题是  相互包含 比如  view2 在view1 上  但是在view2 又创建了一 ...

  2. AE编码、稀疏编码(待续)

    http://ufldl.stanford.edu/tutorial/unsupervised/SparseCoding/

  3. JAVA多线程----用--进阶--》网络编程2

    import java.io.*; import java.net.*; /** * 服务器端逻辑线程 */ public class LogicThread extends Thread { Soc ...

  4. 关于python机器学习常用算法的例子

    Home Installation Documentation  Examples     Previous An introduction ... This documentation is for ...

  5. linux 下 Linux 下char转换为wchar_t 设置本地为utf-8编码 以及wchar 的输入输出

    LInux下使用mbstowcs函数可以将char转化为wchar_t函数含义:convert a multibyte string to a wide char string说明:       Th ...

  6. manacher 算法 这个人确实写得太好了;

    O(n)回文子串(Manacher)算法 资料来源网络 参见:http://www.felix021.com/blog/read.php?2040 问题描述: 输入一个字符串,求出其中最大的回文子串. ...

  7. BZOJ5125: [Lydsy1712月赛]小Q的书架(DP决策单调性)

    题意:N个数,按顺序划分为K组,使得逆序对之和最小. 思路:之前能用四边形不等式写的,一般网上都还有DP单调性分治的做法,今天也尝试用后者写(抄)了一遍.即: 分成K组,我们进行K-1次分治,get( ...

  8. hadoop常见错误汇总及解决办法一

    我们经常会遇到一些问题,而且可能会重复性遇到,这些方案可以收藏为以后备用.我们经常遇到如下问题:1.两次以上格式化造成NameNode 和 DataNode namespaceID 不一致,有几种解决 ...

  9. MySQL安装与操作总结

    安装MySQL 添加mysql源 # rpm -Uvh http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm 安装mysq ...

  10. 基于模k可逆计数的数字锁相环fpga实现

    参考http://wenku.baidu.com/view/59420cb069dc5022aaea00bd.html 实现结构是参考的上边的实例,我用的全同步实现,实现过程中发现一些现象,做下记录. ...