HOME > jQuery > jQueryを使って、自動で目次を表示する

jQueryを使って、自動で目次を表示する

このページでは、jQueryでH2タグをひろい、自動で目次を表示しています。目次にはアンカーリンクがつきます。

↓自動で表示している目次

使いどころ

WordPressではプラグイン「Table of Contents Plus」を使えます。でも、Table of Contents Plusはカスタムフィールドに記述したHタグを拾うことが出来ませんでした。

jQueryを使った以下の方法だとカスタムフィールドのHタグも拾ってくれたので、基本的にこの方法でいくほうがら便利かな。

ソース

jQuery

jQueryを読み込んだうえで、headやcommon.jsや個別ファイルに以下を記述する。

	jQuery(function(){// H2タグから目次を自動生成
	var idcount = 1;
	var toc = '';
	var currentlevel = 0;
	jQuery("article h2,article h4:header",this).each(function(){
	this.id = "chapter-" + idcount;
	idcount++;
	var level = 0;
	if(this.nodeName.toLowerCase() == "h2") {
			level = 1;
	//} else if(this.nodeName.toLowerCase() == "h4") {
	//	level = 2;
	}
	while(currentlevel < level) {
		toc += '<ol class="chapter">';
		currentlevel++;
	}
	while(currentlevel > level) {
		toc += "<\/ol>";
		currentlevel--;
	}
	toc += '<li><a href="#' + this.id + '">' + jQuery(this).html() + "<\/a><\/li>\n";

	});
	while(currentlevel > 0) {
		toc += "<\/ol>";
		currentlevel--;
	}
	jQuery("#toc").html(toc);
	});

HTML

目次を表示したい場所に、以下を記述する。

	<div id="toc"></div>

css

目次のデザインはお好みで。

	#toc {
		padding:10px 0 5px;
		margin-bottom: 20px;
		background: #efefef;
		border-radius: 10px;
		}

		ol.chapter {
		display:block;
		font-size:14px;
		padding:3px 20px;
		}

		ol.chapter li {
		list-style:circle;
		}

参考にしたサイト