1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【jQuery】bodyに現在表示されているページのディレクトリ名を付与する

Posted at

開始タグ

静的なWebサイトをコーディングしている最中に、body要素にclassを付与してそのページにしか効かないようなCSSを書いたりする時があります。
このいちいちhtmlに書いていく作業が本当に面倒臭かったので、jQuery先生にお願いしました。

方法

1、現在いるページのディレクトリ名を取得する。
2、ついでに現在いるページの1階層上のディレクトリ名も取得する。
3、その取得したディレクトリ名の文字列冒頭にb_をつける。
4、b_がついた状態の文字列をクラス名としてbody要素に付与する。

sample.js
$(function() {
	var loc = location.pathname.split("/"); //パス名を/で分割して取得
	var dirName = loc[loc.length - 2]; // 文字列の後ろから2番目を取得
	var dirNamePar = loc[loc.length - 3]; // 文字列の後ろから3番目を取得

	// bodyに所属ディレクトリclass名付与
	$('body').addClass('b_' + dirName + ' ' + 'b_' + dirNamePar);
});

例:/hoge/hoge2/hoge3/
上から三行をコンソールで確認してみると・・・

var loc = location.pathname.split("/");

コンソール
0: ""
1: "hoge"
2: "hoge2"
3: "hoge3"
4: ""
length: 5

/の前後も取得してしまうので、0,4には何も取得されていません。

var dirName = loc[loc.length - 2];

hoge3

var dirNamePar = loc[loc.length - 3];

hoge2

となります。
ですので、/hoge/hoge2/hoge3/であれば、そのページのbody要素にはb_hoge2 b_hoge3の2つのクラス名が付与されます。

閉じタグ

1階層上のディレクトリも付与しているのは、ディレクトリ全体で効かせる場合もあるので用意しています。
とはいえ、このやり方は完璧ではないので今後自分なりに見つかれば改良していきたいと思います。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?