2

我正在使用简单的 Jquery 可排序,用户可以拖放元素,但是在每个元素上我都有一些数字,在加载屏幕上所有数字都是按顺序排列的,但是我需要什么人重新编码元素以根据他的选择自动更改该数字。这是我所拥有的工作小提琴

http://jsfiddle.net/4bhb4z1e/

当有人移动等时,我需要 10 号成为第一个将该数字更改为 1 并且所有其他人重新索引的人?

这是现在的代码

<ol class="example">
    <li> <span>1</span>
        <ol></ol>
    </li>
    <li> <span>2</span>
        <ol></ol>
    </li>
    <li> <span>3</span>
        <ol>
            <li><span>4</span>
            </li>
            <li><span>5</span>
            </li>
            <li> <span>6</span>
                <ol>
                    <li><span>7</span>
                    </li>
                </ol>
                <ol>
                    <li><span>8</span>
                    </li>
                    <li><span>9</span>
                    </li>
                </ol>
            </li>
        </ol>
    </li>
    <li><span>10</span>
    </li>
</ol>

JS

$(function  () {
  $("ol.example").sortable()
})

更新

现在我有这样的结构 1, 2, 3, 4, 5 等。

当有人将 4 移动到第一位以将该数字更改为 1 并将所有其他数字重新排序时,我需要什么,例如我将数字 4 移动到第一位将其更改为 1,首先在新的 1 下将该数字更改为 2并进一步

4

3 回答 3

4

该插件具有onDrop事件,因此您可以通过以下方式更新代码:

$(function () {
    $(".example").sortable({
        onDrop: function ($item, container, _super, event) {
            $('.example li').removeClass('dragged');
            $('.example li').removeAttr('style');
            $("body").removeClass('dragging');
            $('.example span').each(function (i) {
                var humanNum = i + 1;
                $(this).html(humanNum + '');
            });
        }
    });
});

小提琴

于 2014-11-10T11:07:48.053 回答
3

您可以使用该update事件。

$(".example").sortable({
    update: function (event, ui) {
    $('.example span').each(function (i) {
            var numbering = i + 1;
            $(this).text(numbering);
        });
    }
});
于 2018-08-12T11:35:59.133 回答
1

一个纯 CSS 的解决方案。

/* list container */
.example {
  counter-reset: seq;
}

/* list item to add number */
.example li>span:before {
  counter-increment: seq;
  content: "("counter(seq)") ";
}
于 2019-06-19T04:07:19.817 回答