用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贴出这 ...
随机推荐
- 选择排序Selection sort
顾名思意,就是直接从待排序数组里选择一个最小(或最大)的数字,每次都拿一个最小数字出来, 顺序放入新数组,直到全部拿完 再简单点,对着一群数组说,你们谁最小出列,站到最后边 然后继续对剩余的无序数组说 ...
- jQuery日历签到插件
插件比较简单,先来看DEMO吧,http://codepen.io/jonechen/pen/bZWdXq: CSS部分: *{margin:0;padding:0;font:14px/1.8 &qu ...
- 抓其根本(一)(hdu2710 Max Factor 素数 最大公约数 最小公倍数.....)
素数判断: 一.根据素数定义,该数除了1和它本身以外不再有其他的因数. 详见代码. int prime() { ; i*i<=n; i++) { ) //不是素数 ; //返回1 } ; //是 ...
- 9.0docker的数据管理
dopcker容器的数据卷 为容器添加数据卷 sudo docker run -v ~/container data:/data -it ubuntu /bin/bash 查 ...
- 主成分分析(PCA)及其在R里的实现
主成分分析(principal component analysis,PCA)是一种降维技术,把多个变量化为能够反映原始变量大部分信息的少数几个主成分.设X有p个变量,为n*p阶矩阵,即n个样本的p维 ...
- Python阶段复习 - part 3 - Python函数
利用函数打印9*9乘法表 def cheng(num): for i in range(1,num+1): for j in range(1,i+1): print('{0} * {1} = {2}' ...
- Linux进程调度与源码分析(一)——简介
本系列文章主要是近期针对Linux进程调度源码进行阅读与分析后的经验总结,分析过程中可能结合部分Linux网络编程的相关知识以便于理解,加深对Linux进程调度的理解和知识分享. 本系列文章主要结合L ...
- 命令行创建KVM虚拟机
qemu命令创建虚拟机: qemu-img create -f qcow2 /home/ubuntu.img 20G qemu-system-x86_64 -m 2048 -enable-kvm ...
- python实战===短信验证码的小项目
项目地址 https://www.shiyanlou.com/courses/609/labs/2007/document flask的中文文档 http://docs.jinkan.org/docs ...
- monkey测试===Monkey测试结果分析(系列三)转
Monkey测试结果分析 一. 初步分析方法: Monkey测试出现错误后,一般的差错步骤为以下几步: 1. 找到是monkey里面的哪个地方出错 2. 查看Monkey里面出错前的一些事件动作,并手 ...