代码之家  ›  专栏  ›  技术社区  ›  ChrisLively

jquery可使用regexp排序

  •  3
  • ChrisLively  · 技术社区  · 15 年前

    我正在尝试找出与列表项ID匹配的正确regexp。

    例如:

    <ul id="MyList" class="connectedSortable">
        <li id="id=1-32">Item 1</li>
        <li id="id=2_23">Item 2</li>
        <li id="id=3">Item 3</li>
        <li id="id=4">Item 4</li>
        <li id="id=5">Item 5</li>
        <li id="id=6">Item 6</li>
    </ul>
    

    在序列化方法中,我希望它在等号(=)后拉所有内容。例如,对于第一个项目,我需要ID为1-32,对于第二个项目,我需要ID为2_23。

        $(function () {
            $("#MyList, #OtherList").sortable({
                connectWith: '.connectedSortable',
                update: function () {
                    $("#MyListOrder").val($("#MyList").sortable('serialize', { regexp: '/(.+)[=](.+)/)' }));
                }
            }).disableSelection();
        });
    

    我试过上面的方法,但效果不太好。我的regexp表达式是错误的,我不知道它应该是什么。思想?

    UDPATE: 我没有使用序列化方法,而是决定使用ToArray。这样我就得到了整个ID,可以撕掉我不想要服务器端的部分。

    1 回复  |  直到 15 年前
        1
  •  4
  •   Kobi    15 年前

    根据规范,该选项应命名为“expression”,并且您不需要 /.../ 在字符串中,除非传递正则表达式。这工作:

    .sortable('serialize', { expression: '(.+)=(.+)' })
    

    或:

    .sortable('serialize', { expression: /(.+)=(.+)/ })
    

    工作示例: http://jsbin.com/oqejo3/2