Я попытался заново создать и меню стиля аккордеона вручную без использования библиотеки jQuery-UI. Все работает нормально, за исключением случаев, когда я нажимаю, чтобы открыть окно, которое открывается немедленно без какого-либо перехода. Я пытаюсь показать скрыть каждый квадрат, добавив класс, открытый. Я генерирую данные внутри каждого динамически, так что данные будут меняться каждый раз, а данные внутри каждого будут совершенно разными.Создание Аккордеона вручную
«Я НЕ ХОЧУ РЕШЕНИЕ ВКЛЮЧАЕТ гармошку» [извините за набрав в шапках :-)]
Я имею установку этого в jsFiddle. Может кто-то, пожалуйста, взгляните на это.
https://jsfiddle.net/2nfd9utt/
Для получения примера кода см. Ниже. Вот структура HTML, которую я использую.
<ul class="prfaccordion">
<li>
<h3 class="prfaccDetailsHeader"> Committees </h3>
<div class="prfaccDetails">
<ul>
<li> Sample Data 1 </li>
<li> Sample Data 2 </li>
<li> Sample Data 3 </li>
</ul>
</div>
</li>
<li>
<h3 class="prfaccDetailsHeader"> Contributions </h3>
<div class="prfaccDetails">
<ul>
<li> Sample Data 1 </li>
<li> Sample Data 2 </li>
<li> Sample Data 3 </li>
</ul>
</div>
</li>
<li>
<h3 class="prfaccDetailsHeader"> Areas </h3>
<div class="prfaccDetails">
<ul>
<li> Sample Data 1 </li>
<li> Sample Data 2 </li>
<li> Sample Data 3 </li>
</ul>
</div>
</li>
</div>
Вот стиль,
.prfaccordion{
width: 150px;
}
.prfgrybox {
background: #eeeeee;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
padding: 10px;
margin: 0px 0px 10px 0px;
border-radius: 10px;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
text-align: center;
}
ul.prfaccordion li {
list-style: none;
margin: 0px 0px 2px 0px;
}
ul.prfaccordion li h3 {
background: #eeeeee url(images/downarr.png) no-repeat 95% 50%;
padding: 6px 10px;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
border-radius: 6px;
-moz-border-radius: 6px;
-webkit-border-radius: 6px;
margin: 0px;
color: #3a4f60;
font-size: 15px;
}
ul.prfaccordion li h3.open {
background: #eeeeee url(images/uparr.png) no-repeat 95% 50%;
border-radius: 6px 6px 0px 0px;
-moz-border-radius: 6px 6px 0px 0px;
-webkit-border-radius: 6px 6px 0px 0px;
}
ul.prfaccordion li .prfaccDetails {
background: #fbfbfb;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
font-size: 13px;
border-radius: 0px 0px 6px 6px;
-moz-border-radius: 0px 0px 6px 6px;
-webkit-border-radius: 0px 0px 6px 6px;
color: #5787ad;
display: none;
transition:all ease .5s;
-moz-transition:all ease .5s;
-webkit-transition:all ease .5s;
}
ul.prfaccordion li .prfaccDetails ul li {
padding: 5px 0px 5px 14px;
position: relative;
border-bottom: 1px solid #FFFFFF;
}
ul.prfaccordion li .prfaccDetails ul li a {
font-size: 13px !important;
color: #5787ad !important;
}
ul.prfaccordion li .prfaccDetails ul li:before {
position: absolute;
top: 9px;
left: 0px;
width: 8px;
height: 8px;
border-radius: 100%;
-moz-border-radius: 100%;
-webkit-border-radius: 100%;
content: "";
background: #b1c7cc;
}
ul.prfaccordion li .prfaccDetails.open {
transition:all ease .5s;
-moz-transition:all ease .5s;
-webkit-transition:all ease .5s;
display: block;
}
}
А вот сценарий,
$(document).ready(function() {
$(".prfaccDetailsHeader").click(function (event) {
if ($(this).hasClass("open")) {
$('.prfaccDetailsHeader').removeClass("open");
$('.prfaccDetails').removeClass("open");
return false;
}
$('.prfaccDetailsHeader').each(function (i, obj) {
$(this).removeClass('open');
});
$('.prfaccDetails').each(function (event) {
$(this).removeClass('open');
});
$(this).addClass("open");
$(this).parent().find('.prfaccDetails').addClass("open");
});
});
жаль могли бы вы уточнить? – locknies
Я думал, что OP не хочет JQuery – DonO
Он не хочет jquery-ui, но он явно использует jquery – Craicerjack