Уебсайт, който разработвам, има списък с връзки в долния колонтитул на всяка страница. Тези връзки са добавени с котви по следния начин:
<ul>
<li class="lines exp"><a href="/bgservices.html#sa">Service A</a></li>
<li class="lines exp"><a href="/bgservices.html#sb">Service B</a></li>
<li class="lines exp"><a href="/bgservices.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>
Крайната цел е връзките в долния колонтитул да активират целевия си div "toggle-trigger" със симулирано събитие за щракване, което ще превключи отварянето на свързания div "toggle-container" след зареждане на страницата "services.html".
За тази цел добавих следния JavaScript / jQuery към „services.html“ в края на тялото, тъй като трябва да се задейства само след като страницата е готова:
<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“ и щракна върху една от връзките в долния колонтитул на същата страница, това не работи при първото щракване, а вместо това работи при второто щракване върху закотвената връзка.
Желаното поведение, разбира се, е да работи по същия начин, независимо от страницата, на която е щракнато върху връзката в долния колонтитул.
какво правя грешно
$(document).ready(function(){});
alias$(function(){});
прави точно това, от което се нуждаете: Изпълнява функцията, след като HTML структурата завърши зареждането. Вече няма нужда да го поставяте в края на тялото. - person Kiruse   schedule 20.09.2013target
не се попълва при първото щракване. При всички следващи кликвания той се попълва. Все още не разбирам защо е така. - person Enzan   schedule 20.09.2013target
при първото щракване, както се очакваше. - person Enzan   schedule 20.09.2013