私が開発している Web サイトには、すべてのページのフッターにリンクのリストがあります。これらのリンクには、次のようなアンカーが追加されます。
<ul>
<li class="lines exp"><a href="services.html#sa">Service A</a></li>
<li class="lines exp"><a href="services.html#sb">Service B</a></li>
<li class="lines exp"><a href="services.html#sc">Service C</a></li>
</ul>
これらのリンクの「services.html」ターゲット ページには、次のように、上記のアンカー リンクにそれぞれ対応する一連のトグル スタイルの div があります。
<div id="sa" class="toggle-trigger">
<h3 class="services-title">
<a class="toggle-text">Service A</a>
</h3>
</div>
<div class="toggle-container">
<p>Lorem ipsum sit dolorem.</p>
</div>
<div id="sb" class="toggle-trigger">
<h3 class="services-title">
<a class="toggle-text">Service B</a>
</h3>
</div>
<div class="toggle-container">
<p>Lorem ipsum sit dolorem.</p>
</div>
<div id="sc" class="toggle-trigger">
<h3 class="services-title">
<a class="toggle-text">Service C</a>
</h3>
</div>
<div class="toggle-container">
<p>Lorem ipsum sit dolorem.</p>
</div>
最終的な目標は、シミュレートされたクリック イベントでフッター リンクがターゲットの「toggle-trigger」div をアクティブにすることです。これにより、「services.html」ページの読み込み後に、関連付けられた「toggle-container」div がトグルで開きます。
この目的のために、本文の最後にある「services.html」に次の JavaScript / jQuery を追加しました。
<script type="text/javascript">
$( document ).ready(function() {
var target = document.URL;
var regex = /services\.html#[a-z]{2}$/;
var result = regex.exec(target);
console.log("Target / Regex / Result: " + target + " / " + regex + " / " + result);
if (result) {
var divID = /#[a-z]{2}/.exec(result);
console.log("divID: " + divID[0]);
$(divID[0]).delay(1000).trigger('click');
}
});
$(".exp").click(function() {
var target = window.location.hash;
console.log("Target: " + target);
$(target).delay(1000).trigger('click');
});
</script>
result
同じページ内の固定リンクをクリックすると、最初の関数の変数が常に null になるため、2 番目の関数を追加しました。
現在、これは、他のサイト ページのフッター リンクをクリックしたときに、私が望んでいたとおりに機能します。ただし、既に「services.html」ページにいて、同じページのフッター リンクの 1 つをクリックすると、最初にクリックしたときに機能しませんが、アンカー リンクが 2 回目にクリックされたときに機能します。
もちろん、フッター リンクがクリックされたページに関係なく、望ましい動作は同じように機能することです。
私は何を間違っていますか?