2010-06-30 74 views
3

我一直在这个网站上搜索和谷歌搜索了一会儿,我无法找到一个很好的解决方案,我的问题。我希望能够保存我的jQuery Portlet在页面上的状态。如果我能避免它,我宁愿没有“保存状态”按钮。序列化jquery排序

反正,我只是从他们的portlet例子复制的jQuery代码:

$(function() { 
    $(".column").sortable({ 
     connectWith: '.column' 
    }); 

    $(".portlet").addClass("ui-widget ui-widget-content ui-helper-clearfix ui-corner-all") 
     .find(".portlet-header") 
      .addClass("ui-widget-header ui-corner-all") 
      .prepend('<span class="ui-icon ui-icon-minusthick"></span>') 
      .end() 
     .find(".portlet-content"); 

    $(".portlet-header .ui-icon").click(function() { 
     $(this).toggleClass("ui-icon-minusthick").toggleClass("ui-icon-plusthick"); 
     $(this).parents(".portlet:first").find(".portlet-content").toggle(); 
    }); 

    $(".column").disableSelection(); 
}); 

我曾尝试加入$(".column").serialize()$(".column").sortable('serialize')和上面一样,但使用$(".portlet"),而不是...我创建了一个变量,将其设置为serialize方法的值,但不返回任何内容。我究竟做错了什么?

编辑:这是一个内部门户列代码:

<div class="column" id="column_1"> 

<div class="portlet" id="portlet_1"> 

<div class="portlet-header">Times</div> 
&nbsp Longest: 
<div class="portlet-content"> 

<ChartFXGauge:DigitalPanel ID="LongestTimePanel" runat="server" > 
</ChartFXGauge:DigitalPanel> 
<p> 
<a href="LongestORTime.aspx">(BySurgeon)</a> 
</p> 
</div> 
</div> 
</div> 
+0

你可以在jsfiddle或jsbin上显示标记还是更好地重新创建它 – redsquare 2010-06-30 20:07:30

+0

为portlet添加标记 – 2010-06-30 20:38:13

回答

3

我结束了这段代码解决:

$(".column").each(function() { 
alert($(this).sortable("toArray")); 
}); 

哪个序列化每列而不是只有第一列。

+0

我无法获得“可序列化”的工作,所以我使用了“toArray”,并将结果传递给我的控制器。好极了! – MrBoJangles 2010-08-25 19:40:30

0

做你的portlet有一个ID属性?

docs

如果序列化返回一个空字符串, 确保ID属性包括 强调

+0

是的,我看到了。在添加带下划线的ID后,它只返回[object Object]。 – 2010-06-30 19:58:06

+0

你在IE中调试吗?你应该使用firebug来使用firefox,然后将输出写入控制台,如下所示:console。日志(输出); 它会给你一个更好的看看你到底回来了什么。 – 2010-07-11 16:57:53

2

要使用的排序的.toArray()函数。

从jQuery排序文档:

指定者

签名: .sortable( “指定者”)

序列化可排序的项目ID的 成字符串的数组。如果你有

<ul id="a_sortable"><br> 
<li id="hello">Hello</li><br> 
<li id="goodbye">Good bye</li><br> 
</ul> 

,做

var result = $('#a_sortable').sortable('toArray'); 

然后

结果[0]将包含 “你好” 和 结果[1]将包含 “再见”。

所以能够节省的状态,你就必须有某种形式的Ajax调用用于调用.sortable(“指定者”)的变化选项,你就会有一个很好的阵列的ID的顺序。