用jquery实现文章自动生成二级目录(续)
使用方法的补充
我们可以把我们的js和css上传到博客园,然后在页面HTML代码中使用他们。
发现的一些问题
在我把我的js放到自己的博客园上运行之后发现了几个问题:
- 博客园博客的子标题用的是h2,自动生成目录的js把博客的子标题也加入到了目录中。
- 写了一篇比较长的博客,发现用目录跳到某处后没有链接返回目录处,有些不方便。
- 每次写完文章还得在文章的HTML中加目录的div。
解决问题
参考:薰衣草的旋律的一篇文章。
- 博客园子标题的问题,只要把一级标题的选择器改一下就好。
- 在每个标题前面加上回到顶部的标签。
- 在js中自己加div并放到文章所在层的开头。
- 另外增加了一些css和js动画,让目录显示在页面右侧并且靠边。
最后的代码
js:
var flag = 0;
$(document).ready(function() {
GenerateContents2();
contents_show();
}); function GenerateContents() {
var num = 0;
var content = "<ul>";
$("#cnblogs_post_body h3").each(function(){
//原来是$("h2")
content += "<li>" + GenerateA(num,$(this).text()) + "</li>";
$(this).before(GenerateLabel(num));
num++;
});
content += "</ul>"
content = packeageContent(content);
if($('#cnblogs_post_body').length != 0 )
{
$($('#cnblogs_post_body')[0]).prepend(content);
}
} function GenerateContents2() {
var num = 0;
var content = "<ul>";
$("#cnblogs_post_body h3").each(function(){
content += "<li>"+GenerateA(num,$(this).text());
$(this).before(GenerateLabel(num));
num++; var second = $(this).nextUntil("#cnblogs_post_body h3","#cnblogs_post_body h4");
if (second) {
content += "<ul>";
second.each(function(){
content += "<li>"+GenerateA
(num,$(this).text())+"</li>";
$(this).before(GenerateLabel(num));
num++;
}
);
content += "</ul>";
};
content += "</li>";
});
content += "</ul>";
content = packeageContent(content);
if($('#cnblogs_post_body').length != 0 )
{
$($('#cnblogs_post_body')[0]).prepend(content);
}
} //这两个函数本来想的是以后改着方便
function GenerateLabel(num) {
var a = "<div><a name = 'label" + num + "'></a>";
a += "<a href='#top' style='float:right'>回到顶部</a>"
a += "</div>"
return a;
} function GenerateA(num ,text) {
var ss = "<a href='" + "#label"
+ num +"'>" + text
+ "</a>";
return ss;
} function packeageContent(content) {
var tmp = "<a name='top'></a>" ;
tmp += "<div id='contents'>";
tmp += "<div id='button'><b style='font-size:18px'>阅读目录</b></div>";
tmp += "<div id='contents_main'>";
tmp += content;
tmp += "</div>";
tmp += "</div>";
return tmp;
} function contents_show(){
var button = $("#cnblogs_post_body #contents #button");
$(button).click(
function(){
if (flag == 0) {
$("#contents_main").show("slow");
flag = 1;
} else {
$("#contents_main").hide("slow");
flag = 0;
}
}
);
}
css代码:
#cnblogs_post_body #contents {
position: fixed;
right: 0px;
top: 454px;
background-color: #FFF6DC;
border: 2px solid #FEC447;
} #contents_main a {
height: 1.4em;
display: block;
} #cnblogs_post_body #contents #button {
width: 2em;
float: left;
text-align: right;
} #cnblogs_post_body #contents #button:hover {
background-color: #fff;
} #cnblogs_post_body #contents #contents_main {
display: none;
float: right;
}
#cnblogs_post_body a {
text-decoration: none;
color: #2769C0;
padding: 1px 2px;
}
#cnblogs_post_body a:hover{
color: #fff;
background-color: #78AFD3;
padding: 1px 2px;
}
#cnblogs_post_body ul li {
list-style: inherit!important;
margin-bottom: 0.1em;
}
虽然样式有点丑。。
用jquery实现文章自动生成二级目录(续)的更多相关文章
- 用jquery实现文章自动生成二级目录
前段时间有个同学问有没有办法在博客园上发一篇文章然后自动生成文章的目录.之前不知道该怎么做这几天看了些jquery之后觉得还是容易的. 一级目录 一级目录的思路很简单,找出作为一级标题的元素,在某个地 ...
- Jquery实现自动生成二级目录
在博客园开通博客以后,就看到某位博友写的js自动生成目录的文章,当时觉得生成目录能给阅读带来方便,所以就直接拿来使用了.用了一段时间以后,发现只能生成一级目录,不能生成多级目录,有点美中不足.所以想着 ...
- 第 10 篇:小细节 Markdown 文章自动生成目录,提升阅读体验
目录 在文中插入目录 在页面的任何地方插入目录 处理空目录 美化标题的锚点 URL 作者:HelloGitHub-追梦人物 文中涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 上 ...
- JavaScript自动生成博文目录导航
转载于:JavaScript自动生成博文目录导航 我们在写博客的时候,如果博文里面有目录,会给人结构清晰.一种一目了然的感觉,看目录就知道这篇博文要讲解的内容,并且点击目录标题就可以跳转到 具体的内容 ...
- JavaScript自动生成博文目录导航/TOP按钮
博客园页面添加返回顶部TOP按钮 进入网页管理->设置 在"页面定制CSS代码"中添加如下css样式,当然你可以改为自己喜欢的样式 此处可以将背景色background-co ...
- TP自动生成模块目录
TP自动生成模块目录 例如我想在项目中增加一个AdminI模块 只需要在入口文件index.php中添加: define('BIND_MODULE','Admin'); 再访问127.0.0.1项目就 ...
- JavaScript:自动生成博文目录导航
感谢 孤傲苍狼 分享了 自动生成博文目录的方法,本文仅作存档使用. 图 1:效果预览 CSS 样式 #TOCbar{ font-size:12px; text-align:left; position ...
- CSDN中根据文章自动生成文章目录
概述 CSDN中有根据文件内容中H标签在文章中自动生成文章目录,看起来比较专业,就想把它搬到自己的博客园中.类似下图 提取JS脚本 通过浏览器开发者工具(IE/Chrome)找到产生文章目录javas ...
- Nginx根据目录自动生成二级域名
前言: 每次创建二级域名如果都修改一次配置文件的话,项目多了会带来很多不必要的工作量,如果能够在一个web目录下创建一个文件夹并且自动生成文件目录的话,那真是极好的,本文就基于Nginx贴出这 ...
随机推荐
- 2050年这些职业将逐渐被AI(人工智能)取代
耳熟能详的人工智能 深蓝Deep Blue是美国IBM公司生产的一台超级国际象棋电脑,重1270公斤,有32个大脑(微处理器),每秒钟可以计算2亿步."深蓝”输入了一百多年来优秀棋手的对 ...
- python基础--结构篇
在C/C++/Java中,main是程序执行的起点,Python中,也有类似的运行机制,但方式却截然不同: Python使用缩进对齐组织代码的执行,所有没有缩进的代码(非函数定义和类定义),都会在载入 ...
- 数据结构:K-D树
K-D树实际上是一棵高维二叉搜索树,与普通二叉搜索树不同的是,树中存储的是一些K维数据 普通的二叉搜索树是一维的,当推广到K维后,就是我们的K-D树了 在K-D树中跟二叉搜索树差不多,也是将一个K维的 ...
- 数据结构:二维ST表
POJ2019 我们其实是很有必要把ST算法拓展到二维的,因为二维的RMQ问题还是不少的 int N,B,K; ]; int val[maxn][maxn]; ][]; ][]; 这里的N是方阵的长宽 ...
- MSSQL Get Last Monday and Last Sunday
获取上周的周一和周日 代码: --start of last week , ) --end of last week , )
- [uva11806]容斥定理
n*m的矩形 k个人 第一行,最后一行,第一列,最后一列都至少站有一个人 小水题 正着做不好做,要反着想,那就容斥定理,ABCD四种情况分别是那四个行列分别没有人. #include<cstdi ...
- 省队集训Day1 过河
[题目大意] 小奇特别喜欢猪,于是他养了$n$只可爱的猪,但这些猪被魔法猪教会了魔法,一不看着某些猪就会自己打起来. 小奇要带着他的猪讨伐战狂,路途中遇到了一条河.小奇找到了一条船,可惜这条船一次只能 ...
- 【NOIP】提高组2015 子串
[题意]求从字符串A中取出k个互不重叠的非空子串顺序拼接形成B的方案数.n<=1000,m<=100,k<=m. [算法]动态规划 [题解]这题主要是将从i-l转移变成从i-1转移, ...
- 【NOIP】提高组2012 同余方程
[算法]扩展欧几里德算法 [题解]学完扩欧就可以随便水了... 转化为不定方程ax-by=1. 因为1且题目保证有解,所以方程有唯一解. 紫书曰:同余方程的一个解其实指的是一个同余等价类. 所以满足x ...
- vim 以16进制进行文件编辑
用 vim中二进制文件的编辑是先通过外部程序xxd来把文件dump成其二进制的文本形式,然后就可以按通常的编辑方式对文件进行编辑,编辑完成后再用xxd 转化为原来的形式即可. 可分如下几步进行: (1 ...