Webエンジニア 新人日記

Webエンジニアになりました。元々はCOBOLやらBASICやらでプログラムしてました。C言語やVisualBasicは趣味でやっていましたが、久々に現場復帰ということです。資格はエンベデッドスペシャリスト、DBスペシャリスト、ネットワークスペシャリスト、セキュリティスペシャリスト、システムアーキテクト、プロジェクトマネージャ他を所有

jQueryでのDOMの便利な使い方

例えば、hoverでバルーンヘルプを出したいようなシチュエーション。

チェックボックスの横に文字を置き、その文字にカーソルを乗せるとヘルプが出るようにしたい。
チェックボックスから文字までは、labelタグを使うことで文字をクリックしてもチェックできるようにしたい。

<label>
	<input type="checkbox" name="name" value="1">
	国語
</label>

で、チェックボックスの横の文字に合わせたときだけ、ヘルプを出すようにしたい。

<label>
	<input type="checkbox" name="name" value="1">
	国語
</label>
<dl class="arrow_box">
	<dt>現代文</dt>
	<dd>てにをはから始める国語</dd>
</dl>

CSSで、display: noneを使ってヘルプは予め非表示にしておく。

.arrow_box {
  display: none;
  position: absolute;
  padding: 10px;
  -webkit-border-radius: 8px;
  -moz-border-radius: 8px;  
  border-radius: 8px;
  background: rgba(4, 137, 177, 0.7);
  background: #0489B1\9; /*IE8用*/
  color: #fff;
  z-index:10;
}

.arrow_box:after {
  position: absolute;
  bottom: 100%;
  left: 30%;
  width: 0;
  height: 0;
  margin-left: -30px;
  border: solid transparent;
  border-color: rgba(51, 51, 51, 0);
  border-bottom-color: rgba(4, 137, 177, 0.7);
  border-bottom-color: #0489B1\9; /*IE8用*/
  border-width: 10px;
  pointer-events: none;
  content: " ";
}

表示と非表示を切り替えるのはJavascriptjQueryを使えばDOMも簡単に見つかる。
ヘルプを表示したい部分をspanタグで囲む。

<label>
	<input type="checkbox" name="name" value="1">
	<span class="hov">
	国語
	</span>
</label>
<dl class="arrow_box">
	<dt>現代文</dt>
	<dd>てにをはから始める国語</dd>
</dl>

階層的には、spanの親のlabelの次のdlタグの内容を表示させる。

$(function () {
$(".hov").hover(
  function () {
    $(this).parents('label').next('dl').show();
  },
  function () {
    $(this).parents('label').next('dl').hide();
  }
);
});

parentが一つ親を求めるのに対し、parentsメソッドは親の再帰的な集合。引数を指定することで絞込ができる。
なぜこんなことをするかというと、nextメソッドのため。nextメソッドは同じ階層で探すため。