У меня есть вложенное меню аккордеона, которое я заполнил вложенными элементами asp: Repeater на моей странице. Когда я нажал кнопку asp: Imagebutton, страница postbacks и мое вложенное меню аккордеона закрываются. Есть ли способ предотвратить гармоничное меню и сохранить его состояние. И да, я проверил другие вопросы, но я не могу найти какой-либо вложенный аккордеон.Сохранение состояния меню вложенного аккордеона после обратной передачи
Аккордеон Меню
<div id="menu">
<div id="nestedAccordion">
<asp:Repeater runat="server" OnItemDataBound="rptCategories_ItemDataBound" ID="rptCategories">
<ItemTemplate>
<h2><%#Eval("Name")%></h2>
<div>
<asp:Repeater runat="server" OnItemDataBound="rptSubCategories_ItemDataBound" ID="rptSubCategories">
<ItemTemplate>
<h3 subcategoryid="<%#Eval("Id")%>"><%#Eval("Name")%></h3>
<div class="SubCat" id="products" subcategoryid="<%#Eval("Id")%>" style="width: 100%;">
<asp:Repeater runat="server" OnItemCommand="rptProducts_ItemCommand" ID="rptProducts">
<ItemTemplate>
<div class="SubCat" subcategoryid="<%#Eval("SubCategoryId")%>" style="float: left; cursor: pointer">
<asp:ImageButton class="prod1" productid='<%#Eval("Id") %>' CommandName="Select" EnableViewState="true" CssClass="prodimgs" CommandArgument='<%#Eval("Id") %>' ImageUrl='<%# string.Format("Member/{0}",Eval("ImageUrlTiny"))%>' ID="btnImageUrl" runat="server" />
</div>
</ItemTemplate>
</asp:Repeater>
</div>
</ItemTemplate>
</asp:Repeater>
</div>
</ItemTemplate>
</asp:Repeater>
</div>
</div>
И я сделать его скользить вверх и вниз по кодам Jquery ниже
JQuery
$(document).ready(function() {
var $parents = $('#nestedAccordion').find('div');
var $childs = $('#nestedAccordion h3').find('div');
var parentDivs = $('#nestedAccordion div'),
childDivs = $('#nestedAccordion h3').siblings('div');
parentDivs2 = $('#nestedAccordion div div');
parentDivs3 = $('#nestedAccordion div div div');
$('#nestedAccordion h2').click(function() {
$parents.slideUp();
if ($(this).next().is(':hidden')) {
$(this).next().slideDown();
} else {
$(this).next().slideUp();
}
});
$('#nestedAccordion h3').click(function() {
var subcatId = $(this).attr("SubCategoryId");
$childs.slideUp();
$(this).siblings('div').slideUp();
if ($(this).next().is(':hidden')) {
$(this).next().slideDown();
} else {
$(this).next().slideUp();
}
$(".SubCat[SubCategoryId=" + subcatId + "]").css("display", "block");
var itemIndex = subcatId;
$("#hidMenuItem").val(itemIndex);
});
});
Благодаря
звучит так, как будто вам лучше использовать ajax. Альтернатива - сохранение состояний аккордеона в localStorage. – charlietfl
спасибо, что ответь! что вы имеете в виду о localStorage? Печенье или что-то еще? –