タイトルがクリックされたときにもののブロックを表示/非表示にする簡単なjqueryアニメーションを書いています。マークアップは次のようになります。
<section class="infoblock off">
<h2><span class="sectiontitle rounded-right">TITLE (click to show/hide)</span></h2>
<div class="info"></div><!--info-->
</section>
私のJavaScriptは次のようになります:
$(".infoblock h2").click( function(event) {
//console.log('show info');
if ( $(this).parent( $('.infoblock') ).hasClass('off') ) {
$(this).parent( $('.infoblock') ).removeClass('off');
$(this).parent( $('.infoblock') ).addClass('on').children( $('.info') ).show(300);
console.log( 'On function. Parent class= '+$(this).parent( $('.infoblock') ).attr('class') );
} else if ( $(this).parent( $('.infoblock') ).hasClass('on') ) {
$(this).parent( $('.infoblock') ).removeClass('on');
$(this).parent( $('.infoblock') ).addClass('off');
$(this).parent( $('.infoblock') ).children( $('.info') ).hide(300);
console.log( 'Off function. Parent class= '+$(this).parent( $('.infoblock') ).attr('class') );
}
});
これは機能しますが、タイトルを2回クリックしてタイトルを非表示にすると.info <div>
、タイトルも非表示になります。どうして?!