我正在开发的网站在每个页面的页脚中都有一个链接列表。这些链接附加了锚点,如下所示:
<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 对应于上述锚定链接,如下所示:
<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
单击同一页面内的锚定链接时,第一个函数中的变量始终为空。
目前,这完全符合我在单击其他网站页面上的页脚链接时想要的方式。但是,当我已经在“services.html”页面上并单击同一页面上的一个页脚链接时,它在我第一次单击时不起作用,而是在第二次单击锚定链接时起作用。
无论单击页脚链接的页面如何,所需的行为当然是它的工作方式相同。
我究竟做错了什么?