2013-02-27 2 views
0

У меня есть меню, которое представляет собой вложенный элемент управления ListView, который находится на моей главной странице. Я использую JQuery ниже, чтобы превратить этот ListView в аккордеон. Проблема в том, что когда я нажимаю на названия меню, это вызовет обратную передачу. Таким образом, подменю мигает, и после завершения записи он перезагружает страницу и меню (закрытие активного подменю).JQuery аккордеон предотвращает меню collaspe после обратной передачи

$('.head').each(function() { 
      var $content = $(this).closest('li').find('.content'); 
      $(this).click(function (e) { 
       // e.preventDefault(); 
       $content.not(':animated').slideToggle(); 
      }); 
     }); 
+1

jQuery 'event.preventDefault()' в вашем случае 'e'. Кстати, что это такое: 'var $ open = $();'? –

+0

@roXon Я изначально был там. Но это предотвратит обратную передачу. Я хочу получить торт и съесть его! – jackncoke

ответ

2

Ну, просто попробуйте несколько способов сохранить состояние во время обратной передачи. Два самых простых - использование POST и GET, т.е. ViewState или какая-то строка запроса.

Продолжение

Я лично рекомендую использовать скрытое поле, скажем, что вы хотите, чтобы третий элемент, чтобы открыть при загрузке, то вы бы использовать что-то вроде

<input id="hidMenuItem" type="hidden" value="3" /> 

Затем с помощью JQuery

$(document).ready(function { 
    var itemIndex = $("#hidMenuItem").val(); 
    $("li .content:nth-child(" + itemIndex + ")").slideToggle(); 
}); 

Чтобы сохранить открытый объект до обратной передачи, сделайте это в случае click

var itemIndex = $("li .content").index(this); 
$("#hidMenuItem").val(itemIndex); 

Это не проверено, но это идея. Надеюсь, что поможет

+0

Я не сторонник, но я предполагаю, что этот ответ был опущен, потому что он довольно расплывчатый, и это скорее риторическая проза, чем технический совет, можете ли вы попытаться быть более ясными и улучшить? –

Смежные вопросы