0

マスター ページにネストされた ListView コントロールであるメニューがあります。以下の Jquery を使用して、この ListView をアコーディオンに変換します。問題は、メニューのタイトルをクリックするとポストバックが発生することです。したがって、サブメニューが点滅し、ポストバックが完了すると、ページとメニューがリロードされます (アクティブなサブメニューを閉じます)。

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

1 に答える 1

2

簡単に言えば、ポストバック中に状態を維持する方法はほとんどありません。最も簡単な 2 つは、POST と GET を使用する方法です。つまり、ViewState または何らかのクエリ文字列を使用します。

続き

個人的には非表示フィールドを使用することをお勧めします。たとえば、ロード時に 3 番目のアイテムを開きたい場合は、次のようなものを使用します。

<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);

テストされていませんが、これがアイデアです。それが役立つことを願っています

于 2013-02-27T17:47:47.657 に答える