Лучший способ справиться с этим - не использовать идентификаторы, а использовать классы для внешнего элемента.Таким образом, ваш PHP будет изменен следующим образом:
<?php var $faqnum = 0; $faqnum++; ?>
<div id="faqwrap<?php $faqnum; ?>" class="question">
<h4><a href="#faq<?php $faqnum; ?>" class="slidetoggle">What data is shared?</a></h4>
<div id="faqbox<?php $faqnum; ?>" class="slidebox">
<p>Data sharing is defined by the type of service:</p>
<ul class="list">
<li>Third-party access to data (Enhanced Services only is strictly controlled and determined by the SDA)</li>
<li>All members must participate in points of contact and conjunction assessment but can choose whether to participate in other services</li>
<li>Participation in a service requires the member to provide associated data<br />
</ul>
</div>
</div>
Ваш JQuery будет переписан с помощью селектора для класса «question».
$(document).ready(function() {
$('.slidebox*').hide();
// toggles the slidebox on clicking the noted link
$(".question a:not(div.slidebox a)").click(function() {
/* close everything first */
$('div.slidebox').slideUp('normal');
/* selects and opens the the slidebox inside the div */
$(".slidebox", this).slideToggle('normal');
return false;
});
});
Это даст вам эффект, которым вы являетесьнаходясь в поиске.Ключевым отличием в JQuery является то, как вы получаете слайдбокс внутри вопроса, по которому щелкнули.Я использую выделенную область $(".slidebox", this)
, чтобы получить только слайдбокс в элементе ".question", по которому щелкнули.
Тонкое визуальное отличие состоит в том, что slideUp () происходит перед slideToggle ().Это по существу закроет все открытые запросы, прежде чем откроет нужный.Если вы продолжите анимацию быстро, это будет более чем хорошо.Преимущество этого подхода заключается в том, что вам не нужно беспокоиться о количестве вопросов на странице, а селекторы, скорее всего, более оптимизированы, чем цикл for.
Edit Iскорректировал код PHP, чтобы использовать класс для «slidetoggle» вместо идентификатора.Технически это ошибка HTML, когда несколько идентификаторов совпадают.Это может отбросить некоторые вспомогательные технологии для людей с ограниченными возможностями.Я предполагаю, что этот раздел кода был повторен на странице несколько раз.