Jquery 可排序列表不会序列化,为啥?

Posted

技术标签:

【中文标题】Jquery 可排序列表不会序列化,为啥?【英文标题】:Jquery sortable list won't serialize, why?Jquery 可排序列表不会序列化,为什么? 【发布时间】:2010-11-01 04:38:51 【问题描述】:

我正在 Zend Framework 应用程序中使用 jquery 实现可排序的图像列表。 我只是无法让 .sortable('serialize') 方法返回一个空字符串。

当我尝试在我的应用程序之外使用一些简单的示例时,它可以工作。

下面的 sn-p 是否包含在各种其他和其他标签中是否重要。我认为不应该。无序列表应该只能通过id找到吧?

html

<ul id="mylist">
    <li id="1">
        <div>
            <img src="image_1.jpg" />
            <p class="value_item">some text</p>
        </div>
    </li>
    <li id="2">
        <div>
            <img src="image_2.jpg" />
            <p class="value_item">some text</p>
        </div>
    </li>
</ul>

javascript

$(document).ready(function()                  
    $('#mylist').sortable( 
        update: function() 
            var order = $('#mylist').sortable('serialize');
            alert(order);
                                 
    );
);

【问题讨论】:

【参考方案1】:

http://api.jqueryui.com/sortable/#method-serialize

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

【讨论】:

是的,这也解决了我的问题。这意味着 *** 中所有这些 jquery 可排序表解决方案的示例都是错误的。 如果您的三个 LI 是(房屋、汽车、树),您可以将它们命名/标识为“li_House”、“li_Car”和“li_Tree”。然后当你序列化它们时,你会按顺序获取名称值,而不是创建它的索引。 我整个上午都在找这个。感谢您回答这个问题! 该死的……为我节省了很多时间 在我的情况下,在 ajax 调用“ui-sortable”类已被删除后,当使用序列化的可排序调用时会反映此错误。在将“ui-sortable”添加到选择器的主父 div 之后,我已经解决了,例如 id:“mylist” 的示例标签。注:我是 jquery v1.7.1 和 jQuery UI - v1.10.3【参考方案2】:

当您使用不合规的 id 时,Jquery 会遇到问题。

ID 不允许以数字开头。它们可以包含数字,但不能作为第一个字符。

【讨论】:

【参考方案3】:

(链接更新) 嗨,几天前我偶然发现了一个类似的问题,但在我的情况下,保持元素的顺序完整是很重要的。我编写了一个小插件,它允许您序列化任意深度和复杂度的 ul 和 ol 列表:

serializeTree

【讨论】:

以上是关于Jquery 可排序列表不会序列化,为啥?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 可编辑/可排序列表

如何使用 Jquery 序列化多个列表

jquery - 如何让列表元素可排序并且也可拖动到另一个列表

jquery可拖动非列表项到可排序列表

jQuery 可排序

jQuery - 在可排序列表中操作删除的元素