0

動的に生成されslideToggle、階層などを開いたり閉じたりするために使用するページがありますdiv。問題ありません。唯一の問題は、ポストバックするたびにdivsを再度生成する必要があり、それらが開いた/閉じた状態を失うことです。それらは常に同じ一意ので生成されidます。

cookieプラグインを使用して、sltoggle関数を呼び出したときの状態を記憶し、ページをリロードしたときにすべての同じdivを展開したいと思います。これが私がこれまでに持っているものです...

    $(document).ready(function () 
    {
        $(".toggle-hide").hide();
        //something in here about opening the divs in the cookie
    });

    function sltoggle(eID) 
    {
        $("div[id$='" + eID + "']").slideToggle(600);
        //I think the below code is okay - I copied it from a working example ^^
        var divState = ($("div[id$='" + eID + "']").css('display') == 'block') ? 1 : 0;
        $.cookie("divState", state)
     } 
4

1 に答える 1

1

説明をインラインでコメントします。

function slToggle(eID) {
   var $div = $("div[id$='" + eDI + "']");
   //Get value of cookie or empty string
   //Cookie is list of eIDs that should be visible
   var cooks = $.cookie("divState") || '';

   //Determine whether eID is already in the cookie
   var isin = $.inArray(eID, cooks.split(','));

   //TODO verify that .is("visible") check works during
   //toggle animation.  Otherwise, this code goes in the
   //toggle animation callback function
   if ($div.slideToggle(600).is(":visible")) {
      //Div is visible, but not in cookie
      if (!isin) {
         $.cookie("divState", cooks + (cooks ? ',' : '') + eID);
      }
   }
   else if (isin) {
      //Div not visible, but in cookie
      $.cookie("divState", cooks.replace(/(^|,)eID(,|$)/, ''));
   }
}
于 2012-10-02T09:03:58.883 に答える