すべての情報が同じページに表示されるシンプルなメニュー設定を作成しました。そのタブが選択されるまで、ほとんどの情報が非表示になっています。私が使用しているフィルター JS はこれでうまく機能しますが、何らかの理由で (CHROME のみ)、メニュー項目 (場所、ヘルプなど) をクリックすると、画面が数百ピクセル飛び出します (選択した情報がうまく表示されます)。けれど)。奇妙なことに、これはページが更新され、アイテムが初めてクリックされたときにのみ発生します。その後、すべてがうまくいきます!
以下は関連するコードですが、実際の動作を確認するには、テスト サイトを参照してください。
フィルターに使用しているJSは次のとおりです。
$(document).ready(function() {
$('#nav a').click(function() {
$('#nav a.current').removeClass('current');
$(this).addClass('current');
var filterVal = $(this).text().toLowerCase().replace(' ','');
$('#content div').each(function() {
if(!$(this).hasClass(filterVal)) {
$(this).hide().addClass('hidden');
} else {
$(this).show().removeClass('hidden');
}
});
return false;
});
});
HTML メニューと情報を次のように使用します。
<ul id=nav>
<a href="#" class="current"><li>Mission</li></a>
<a href="#"><li>Location</li></a>
<a href="#"><li>Help</li></a>
<a href="#"><li>Vendors</li></a>
</ul>
<div id=content>
<div class=mission>
<img src="./images/roosters.jpg">
<h2>The Mission</h2>
<p>...</p>
</div>
<div class=location>
<img src="./images/old_market.jpg">
<h2>Our Location</h2>
<p>...</p>
</div>
<div class=help>
<img src="./images/helpers.jpg">
<h2>Get Involved</h2>
<p>...</p>
</div>
<div class=vendors>
<img src="./images/artisans.jpg">
<h2>Our Vendors</h2>
<p>...</p>
</div>
</div>