jQuery UI可排序,不使用自定义属性进行序列化

时间:2015-08-05 17:37:44

标签: javascript jquery jquery-ui

我使用jQuery UI对data-id属性进行排序。我知道你可以sortable('serialize')使用id="row_4"这样的东西,这对我有用,但我需要这样做。

  • sortable('serialize', {attribute: 'data-id'})提供一个空字符串
  • sortable('toArray'), {attribute: 'data-id'})给出预期输出
<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>
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/

这笔交易是什么?我98%肯定这是以前的工作。

2 个答案:

答案 0 :(得分:4)

key需要valueserialize,但您可以使用参数来覆盖默认行为并获得所需结果。

在您的情况下,您可以设置所需的attributekeyexpression,以便data-id生成并定义key的字符串和适当的价值。像这样:

           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/

答案 1 :(得分:1)

&#34;序列化&#34;如果您没有表格&#34; something- n &#34;的id值,则该方法无效。 (您可以使用_=代替-。)

我们的想法是为您提供一个查询字符串,该字符串具有&#34;&#34;&#34;作为参数名称和-之后的值作为值。