首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不使用自定义属性序列化的jQuery UI排序

不使用自定义属性序列化的jQuery UI排序
EN

Stack Overflow用户
提问于 2015-08-05 17:37:43
回答 2查看 2.9K关注 0票数 3

我使用的是带有jQuery属性的data-id UI排序。我知道您可以在类似于sortable('serialize')的东西中使用id="row_4",这对我确实有效,但我需要这样做。

  • sortable('serialize', {attribute: 'data-id'})给出一个空字符串
  • sortable('toArray'), {attribute: 'data-id'})给出预期输出
代码语言:javascript
复制
<div data-sortable="link/to/handler">
    <div data-id="1">1</div>
    <div data-id="2">2</div>
    <div data-id="3">3</div>
    <div data-id="4">4</div>
    <div data-id="5">5</div>
</div>
代码语言:javascript
复制
var container = $('[data-sortable]');
container.sortable({
    items : "> [data-id]",
    update : function() {
        var postData = container.sortable('serialize', {
            attribute: 'data-id'
        });
        alert(postData); // Nothing
        var postData2 = container.sortable('toArray', {
            attribute: 'data-id'
        });
        alert(postData2); // 1,3,4,5,2 etc.
    }
});

小提琴:http://jsfiddle.net/ogzw5pL2/

怎么回事?我百分之九十八肯定这之前起作用了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-05 17:52:40

您需要keyvalue来实现serialize,但是您可以使用参数来覆盖默认行为并获得想要的结果。

在您的示例中,您可以设置所需的attributekeyexpression,以便它接受data-id,并使用定义的key和适当的值构建字符串。如下所示:

代码语言:javascript
复制
           var postData = container.sortable('serialize', {
                attribute: 'data-id',//this will look up this attribute
                key: 'order',//this manually sets the key
                expression: /(.+)/ //expression is a RegExp allowing to determine how to split the data in key-value. In your case it's just the value

            });

小提琴:http://jsfiddle.net/c2o3txry/

票数 6
EN

Stack Overflow用户

发布于 2015-08-05 17:46:29

如果没有“某某-n”形式的id值,“序列化”方法就不能工作。(您可以使用_=而不是-。)

这样做的目的是为您提供一个查询字符串,该字符串的参数名称为“string”,-后面的值为值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31839235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档