Page Top

MTタグとjQueryを使って、特定の時だけ背景画像をnoneにする。

October 10, 2014

例えば、枠線の付いているボックス内に、タイトルと概要があり、そのタイトルには、h2などのヘッディングタグが使用され、また、タイトルの前にはアイコンがcssで背景画像として指定されており、そのタイトルの下には下線がcssで画像として指定されてあり(概要部分のboxに対しての上部位置への指定)、その下に概要が表示される、というようなコンテンツがあるとします。そして、そのタイトルは、自分のデザインの仕方により、表示したり、しなかったりを、MTのプライベートタグを利用してコントロールしたり、はたまた、タイトルに何も入力しないことにより表示しない、という事をMTタグとjQueryで実現します。ポイントは、タイトルが消えると、概要部分のbox上部に指定している画像の線も一緒に消す、というところです。つまり、タイトルの下線も一緒に消す、ということです。
mt_jquery_bg_none.png

以前の記事、「jQueryで要素の高さを取得し、body要素に記述している背景画像(パターン)のポジション(高さ)を変更する」の応用版になったので覚書として記載してみます。コードとしては、以下となります。(<>は全角にしています。)

<MTSetVar name="page_title_exist" value="0">
<MTSetVar name="no_title_tagged" value="0">

<MTIfNonEmpty tag="MTPageTitle">
<MTSetVar name="page_title_exist" value="1">
</MTIfNonEmpty>
<MTPageIfTagged tag="@no_title" include_private="1">
<MTSetVar name="no_title_tagged" value="1">
</MTPageIfTagged>

<MTIf name="page_title_exist">
<MTUnless name="no_title_tagged">
<h3 class="title"><MTIfNonEmpty tag="MTCFPageTitleLinkUrl"><a href="<$MTCFPageTitleLinkUrl remove_html="1" trim="1"$>" title="<$MTPageTitle remove_html="1" decode_html="1" encode_html="1" trim="1"$>"></MTIfNonEmpty><$MTPageTitle remove_html="1" decode_html="1" encode_html="1" trim="1"$><MTIfNonEmpty tag="MTCFPageTitleLinkUrl"></a></MTIfNonEmpty></h3>
</MTUnless>
</MTIf>
<div class="body pkg">
<$MTPageBody$>
</div>

<MTIf name="page_title_exist">
<MTIf name="no_title_tagged">
<script type="text/javascript">
$('#content .intro-box .row ul li.col .body').css('background', 'none');
</script>
</MTIf>
<MTElse>
<script type="text/javascript">
$('#content .intro-box .row ul li.col .body').css('background', 'none');
</script>
</MTIf>

当初、タイトルを記述している判別のところに一緒にjQueryも記載していたのですが(コードを一石二鳥にしようとして・・)、全然反応がなく(概要上部に背景画像として指定している線が一緒に消えない・・)、おかしいな~と思って何度も確認して分かったのは、そのタイトルの下に概要の来るboxがあることでした・・。jQueryでもhtmlでもコードが上から読み込まれて行くので、消したいbox上部の背景画像のコードの前にjQueryのコードを持ってきても意味が無い、という初心者エラーでした。。

最新記事