使用sortable()(jqueryUI)时修改order数组

时间:2011-11-21 23:53:56

标签: jquery

我有一个列表,我要排序归功于jQueryUI的可排序功能:

    <ul id="list-cat">
        <li id="cat_0" >Coach</li>
        <li id="cat_1" >Victory</li>
        <li id="cat_2" >Defeat</li> 
    </ul> 

我的剧本:

    $("#list-cat").sortable({ 
        placeholder: 'highlight',
        update: function() {  
            var order = $('#list-cat').sortable('serialize');           
            $.post("my url...",order); 
            alert(order);   // displays for example "cat[]=1&cat[]=0&cat[]=2"
        }
      });

我的网址收到$ _POST ['cat']数组,其中$ order为键,$ id_cat为值。我需要将li值(Coach,Victory等)作为数组值而不是$ id_cat,是否可能?

1 个答案:

答案 0 :(得分:1)

将您的ID更改为cat_Coachcat_Victory

请参阅jQuery UI docs on .sortable("serialize")

  

将sortable的item id序列化为form / ajax submittable字符串。调用此方法会生成一个哈希值,该哈希值可以附加到任何URL,以便轻松地将新的项目顺序提交回服务器。

     

默认情况下,通过查看“setname_number”格式的每个项目的ID,它会发出一个哈希,例如“setname [] = number&amp; setname [] = number”。

     

您还可以使用选项哈希作为第二个参数来自定义函数的工作方式。可能的选项是:'key'(用你想要的任何东西替换part1 []),'attribute'(测试另一个属性而不是'id')和'expression'(使用你自己的正则表达式)。

     

如果serialize返回一个空字符串,请确保id属性包含下划线。它们必须采用以下形式:“set_number”例如,具有id属性foo_1,foo_5,foo_2的3元素列表将序列化为foo [] = 1&amp; foo [] = 5&amp; foo [] = 2。您可以使用下划线,等号或连字符来分隔集合和数字。例如foo = 1或foo-1或foo_1都序列化为foo [] = 1.