获取div中的文本长度,然后和属性limit规定的长度进行对比,如果超出长度则用截取指定的长度,超出长度的部分用…替代。
<!DOCTYPE html>
<html>
<head>
<title>jQuery字符串截取</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!--正确的引用路径很重要-->
<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
<style>
{
margin:0;
padding:0;
font-family:"华文楷体" /*Arial, Helvetica, sans-serif;*/
}
#best
{
width:300px;
height:200px;
border:1px solid #ccc;
margin:60px auto 0;
line-height:1.6;
font-size:14px;
padding:10px 0 0 10px
}
.blank
{
font-size:18px;
font-weight:bold;
text-align:center;
padding:20px
}
</style>
</head>
<body>
<div id="best">
<div limit="12">这个字符串如无意外只会显示12个字符,
看看怎样先。床前明月光,疑是地上霜。
举头望明月,低头思故乡.
</div>
<!--空格的长度也会被计入length中-->
<div limit="10">
迟日江山丽,春风花草香。
泥融飞燕子,沙暖睡鸳鸯。
</div>
<div limit="12">落霞与孤鹜齐飞,秋水共长天一色。</div>
<div limit="12">乘风破浪会有时,直挂云帆济沧海。</div>
<div limit="10">昔我往矣,来者衣衣。今我来思,雨雪霏霏。行道迟迟,载渴载饥。我心伤悲,莫知我哀。</div>
</div>
</body>
<script type="text/javascript">
jQuery.fn.limit=function(){
var self = $("div[limit]");
self.each(function(){
var objString = $(this).text();
var objLength = $(this).text().length;
var num = $(this).attr("limit");
if(objLength > num){
$(this).attr("title",objString);
objString = $(this).text(objString.substring(0,num) + "...");
}
})
}
$(function(){
$(document.body).limit();
})
</script>
</html>
以上代码可以实现控制页面中显示固定长度的字符串的功能,超出长度部分会被…替换。
备注:需要引用到jquery-1.8.3.js.
一.实现原理
获取div中文本的长度,然后和通过和属性limit规定的长度进行对比,如果超出长度则使用截取指定的长度,后面用...替代。
二.代码注释
1.jQuery.fn.limit=function(){},用以为jQuery扩展一个实例函数,jQuery对象可以调用此函数。
2.var self = $("div[limit]"),用以获去具有limit属性的div对象集合。
3.self.each(function(){ },可以让获取的让div对象集合中的每一个对象遍历执行一次指定的函数。
4.var objString = $(this).text(),获取div元素中的文本内容,这里的this是指当each()函数进行遍历时当前div。
5.var objLength = $(this).text().length,获取当前div中文本内容的长度。
6.var num = $(this).attr("limit"),获取div中limit属性值,在这里用作了指定的字符长度。
7.if(objLength > num){},div中文本内容长度大于指定长度这执行指定的代码。
8.$(this).attr("title",objString),将div的title属性值设置为div中的内容。
9.objString = $(this).text(objString.substring(0,num) + "..."),截取指定长度字符串,超出的用省略号代替。