span标签中显示固定长度,超出部分用省略号代替,光标放到文字上显示全部

在span中实现显示某段内容,固定其长度,多余部分用省略号代替,这样就用到html的title属性;

如:<span title="value"></span>

title属性:其值是text,属性描述是规定元素的工具提示文本,意思就是鼠标移到元素上时显示title中的内容;

以span为例实现上述功能:

html:

<div>
  <span class="basic-l left10">筛选标签:</span>
  <span class="basic-r" style=‘width:120px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;‘ id="showLabelAndAttrName" title=""></span>
</div>

js:

$("#showLabelAndAttrName").text("测试标签1-测试标签属性1、测试标签属性2");
$("#showLabelAndAttrName").attr("title","测试标签1-测试标签属性1、测试标签属性2");

结果展示:

注:样式style中的white-space:nowrap;为规定段落中的文本不换行;text-overflow:ellipsis;为当文本内容溢出时显示省略标记;overflow:hidden;为超出宽度后就隐藏

为title属性赋值使用$("#id").attr("title",title值)。

----------------------------------------------------------------------------------------以下为6.27追加----------------------------------------------------------------------------------------

在js中设置显示长度超出部分用省略号,其后有"查看更多"连接,点击详情展示全部信息,再次点击则关闭展示。

html:

<div>
  <span class="basic-l left10">筛选标签:</span>
  <span class="basic-r"id="showLabelAndAttrName" title=""></span>
  <span class="basic-r" id="showSelectLabel" style="display:none;margin-left: 113px;"></span>
  <a id="showHideLabel" onclick="showHideLabel()" style="display:none;">查看更多</a></div>

其中:

<span class="basic-r" id="showSelectLabel" style="display:none;margin-left: 113px;"></span>
<a id="showHideLabel" onclick="showHideLabel()" style="display:none;">查看更多</a>

<span></span>标签为要显示的所有内容;<a></a>标签为查看更多连接;且全部隐藏。

js:

var allLabelAttr = "测试标签测试标签测试标签测试标签测试标签测试标签测试标签测试标签测试标签测试标签";
if (allLabelAttr.length > 20) {
  //截取固定长度
  var allLabelAttrCut = allLabelAttr.substring(0, 20);
  //为隐藏<span>标签赋值--全部
  $("#showSelectLabel").text(allLabelAttr);
  //为非隐藏<span>标签赋值--截取固定长度
  $("#showLabelAndAttrName").text(allLabelAttrCut+"...");
  //显示连接标签<a>
  $("#showHideLabel").toggle();
} else {  $("#showLabelAndAttrName").text(allLabelAttr);}
//点击查看更多调用函数
function showHideLabel(){
    $("#showSelectLabel").toggle();
}

结果展示:

  点击“查看更多”

从页面效果上看非隐藏<span>标签值还存在,且"查看更多"连接在点击是也会下移到隐藏的<span>初,如果根据非隐藏<span>中的id把值去掉也不能解决"查看更多"连接下移;那么可以使用删除和新增标签来解决;修改后的代码如下:html:在第一个<span>中的class中加了一个addLabel
<div>
  <span class="basic-l left10 addLabel">筛选标签:</span>
  <span class="basic-r" id="showLabelAndAttrName" title=""></span>
  <span class="basic-r" id="showSelectLabel" style="display:none;"></span>
  <a id="showHideLabel" onclick="showHideLabel()" style="display:none;">查看更多</a>
</div>

js:

var allLabelAttr = "测试标签测试标签测试标签测试标签测试标签测试标签测试标签测试标签测试标签测试标签";
if (allLabelAttr.length > 20) {
  //截取固定长度
  allLabelAttrCut = allLabelAttr.substring(0, 20);
  //为隐藏<span>标签赋值--全部
  $("#showSelectLabel").text(allLabelAttr);
  //为非隐藏<span>标签赋值--截取固定长度
  $("#showLabelAndAttrName").text(allLabelAttrCut+"...");
  //显示连接标签<a>
  $("#showHideLabel").toggle();
} else {
  $("#showLabelAndAttrName").text(allLabelAttr);
}
//点击查看更多调用函数
var allLabelAttrCut = "";//截取固定长度,全局变量
var flag = true;//点击标识;默认true,点击变为false,再点击变为true
function showHideLabel(){

    //定义非隐藏标签;第一次点击删除html中的此标签,再次点击把此标签添加到原来的html处
    var span = $("<span class=‘basic-r‘ id=‘showLabelAndAttrName‘ title=‘‘>"+allLabelAttrCut+"..."+"</span>");
    if (flag) {
        //删除html中非隐藏标签
        $("#showLabelAndAttrName").remove();
        flag = false;
    } else {//截取固定长度有值
        //添加标签到html中
        $(".addLabel").after(span);
        flag = true
    }
    $("#showSelectLabel").toggle();
}

这样就可以把上述所说的问题解决了;效果展示如下:

未点击

已点击

注:js中使用了两个函数分别是toggle()和after();toggle()可用作切换元素的可见状态;当前元素可见,那么触发后就会隐藏,如果元素不可见出发后则变为可见。该方法版本 1.8 中被废弃,在版本 1.9 中被移除。
after()在被选元素后插入指定元素;与之相反的是before()。

原文地址:https://www.cnblogs.com/xiaoshen666/p/11173944.html

时间: 2024-10-10 11:00:04

span标签中显示固定长度,超出部分用省略号代替,光标放到文字上显示全部的相关文章

解决MVC中JSON字符长度超出限制的异常

解决MVC中JSON字符长度超出限制的异常 解决方法如下: http://stackoverflow.com/questions/4155014/json-asp-net-mvc-maxjsonlength-exception 解决MVC中JSON字符长度超出限制的异常,布布扣,bubuko.com

蓝牙通信中读取固定长度数组的解决

2014-05-05 18:10 今天主要忙于工作.之前遇到一个问题,今天得以解决. 问题的描叙:需要从输入流中读取固定长度的字节数组. 问题的解决:今天参考了网上的资料.解决了. 注释部分:之前是通过拷贝数组进行解决,但是难以解决. 解决的代码如下: public synchronized void run() { byte[] buffer = new byte[16]; int bytes = 0; while (mmInStream != null) { try { // 通过连接的端口

CSS实现div内文字显示两行,超出两行部分省略号显示

在搭建前台文章列表中,需要实现div内文字显示两行,超出的则省略号显示. 找了很多,都貌似只能一行显示.最后在百度知道找到答案. 答案转自百度知道,题主的自答. 用的是-webkit-私有属性.text-overflow: -o-ellipsis-lastline;overflow: hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical; 另有回

Bootstrap做的HTML页面在本地IE打开正常,放到服务器上显示就不正常了

<meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> 浏览器默认开启兼容模式的问题,很多CSS3内容不支持,一般输入上面两行代码可以解决 作者:hu Hua链接:http://www.zhihu.com/question/24674452/answer/28658889来

css限制显示字数,文字长度超出部分用省略号表示【转】

为了保证页面的整洁美观,在很多的时候,我们常需要隐藏超出长度的文字.这在列表条目,题目,名称等地方常用到. (1).文字超出一行,省略超出部分,显示'...' 如果这种情况比较多,可以取一个切合作用的类名用于复用. .line-limit-length { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; //文本不换行,这样超出一行的部分被截取,显示... } <div class="item">

MVC中JSON字符长度超出限制

本文导读:在MVC中通过JsonResult返回JSON字符串时,如果字符串长度过长,会抛出使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错,字符串的长度超过了为 maxJsonLength 属性设置的值,下面介绍其解决方法. ASP.NET MVC中通过JsonResult返回JSON字符串时,当JSON字符串长度过长时,会报如下错误 异常详细信息: System.InvalidOperationException: 使用 JSON JavaScriptSe

超出部分用省略号代替,鼠标放上去显示多余部分内容

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <style> #overplus { width:100px; overflow:hidden; white-space:nowrap; text-overflow:ellipsis;} #overplus:hov

文字过多以省略号代替,放在文字上会显示title信息提示

第一种: <td style="text-align:left; word-wrap:break-word;" title="${b.remarks}"> ${fns:abbr(b.remarks,15)}</td> 第二种: <a title="${jq.alarmInfo}" href="javascript:open('${jq.id}')"> <c:if test="

ie下li标签中span加float:right不换行问题解决方案

在IE6,IE7下使用标签时,在加入右浮动样式(float:right)后,会换行的bug解决方案:bug案例:新闻列表中,为使时间右对齐,加右浮动产生换行 <ul> <li><a href=“#”>BEST SUSHI MENU</a> <span>2012-12-24</span></li> <li><a href=“#”>BEST SUSHI MENU</a> <span&g