2010-05-07 51 views
0

我写下面的代码折叠/展开某个部分。它工作正常。最后,如果我点击“保存”按钮,我将在asp.net中重新加载页面。那么部分将再次使用默认的Colleapse。我需要他们回来扩大。我怎样才能做到这一点?Jquery toggle应该在页面重新加载后展开

$(function() { 
     $('tr.subCategory') 
      .css("cursor", "pointer") 
      .attr("title", "Click to expand/collapse") 
      .click(function() { 
     $(this).siblings('.RegText-' + this.id).toggle(); 
      }); 
      $('tr[@class^=RegText-]').hide().children('td'); 
    }) 

回答

1

如果你正在使用更新的面板可以使我们的事实,jQuery的$(文件)。就绪只叫在初始加载和每个回发调用ASP.NET AJAX的pageLoad()。您可以折叠$(document).ready中的部分,以便它最初隐藏,然后在pageLoad()中分配click处理程序,以便用户在保存后仍然可以再次折叠它。

$(document).ready(function() {{ 
    $('tr[@class^=RegText-]').hide().children('td'); 
}}); 

function pageLoad() { 
    $('tr.subCategory').click(function() {         
     $(this).siblings('.RegText-' + this.id).toggle(); 
    });   
} 
+0

我试过了。点击保存按钮后,页面正在重新加载并再次折叠。 – James123 2010-05-08 02:45:54

+0

我想如果用户扩大部分。保存后也应该扩大。 – James123 2010-05-08 02:54:45

+0

不幸的是,以上内容仅适用于使用更新面板的情况。如果没有,那么可以在后面的代码中插入你的javascript,并且只在页面加载和加载时和回发时单击处理程序写入隐藏脚本。 – 2010-05-08 03:36:13

4

可以使用保存状态:

  • URL哈希:mysite.com#A = 1,B = 2 ......不过还是要录制你的状态。
  • 饼干
  • Window.name

在重载,检查记录状态,分析它,并在你的代码重新执行。

编辑:

当你执行一些变化,你需要的地方记录这个动作(即A组是开放的),在某种代码的UI。它可以是字符串中的名称,值对(ID,STATE | ID,STATE..etc)或任何你选择的。然后,您需要编写一个机制来获取此“保存的状态”信息,并重新初始化用户界面回到原来的位置。

一旦你已经完成的方式来表示和重新初始化状态,你必须考虑你将如何保存和检索。

你可以保存它是一个cookie,如果它不是太大。加载页面时,检查cookie并解析数据并运行重新初始化例程以恢复UI。

另一个持久的地方藏匿数据是window.name,可容纳高达2MB的字符串。与cookie相同。

第三种方法是存储在URL中的状态信息:document.location = document.location + "#" + stateData。然后,您可以解析URL中的内容以获取状态数据。

的“URL /散列”的方法正在成为优选的技术,因为它允许书签和是一种新的规范,以允许搜索机器人容易地读取基于Ajax的网站。

参见:http://code.google.com/intl/sv-SE/web/ajaxcrawling/docs/specification.html

+0

请问您能解释一下吗? – James123 2010-05-07 21:01:12

+0

请参阅我的编辑。 – 2010-05-07 21:15:38

0

你可以使用一个隐藏的div场,并修改您的JS设置隐藏文本上点击扩展字段的ID。您的功能可以检查隐藏文本的值,并显示与隐藏文本ID匹配的字段。

在你的页面:

<div class="hidden" style="display:none;" /> 

在你的.js

$(function() { 
     $('tr.subCategory') 
      .css("cursor", "pointer") 
      .attr("title", "Click to expand/collapse") 
      .click(function() { 
     $(this).siblings('.RegText-' + this.id).toggle(); 
       $('.hidden').text(this.id); // set the hidden field to the id shown 
      }); 
      $('tr[@class^=RegText-]').hide().children('td'); 
      $('#' + $('.hidden').text() + ''').show(); // show the id set in hidden field 
    }) 
+0

如何将id值设置为隐藏字段?我有几个部分要维护。我可以这样做吗?请解释我。我是新来的JQuery – James123 2010-05-08 00:14:33

+0

我试着在页面刷新$('。hidden')。val(this.id);显示是空的。这对我来说非常艰难。请给我一些代码。 – James123 2010-05-08 02:06:48

+0

请参阅我的编辑 – derek 2010-05-08 10:35:55