javascript - jQuery 保存可排序列表

标签 javascript jquery html

我使用了这个 jQuery 示例:http://jqueryui.com/sortable/#connect-lists-through-tabs

<script>
$(document).ready(function() {
    $(function() {
    $( ".connectedSortable" ).sortable().disableSelection();
    var $tabs = $( "#tabs" ).tabs();

    var $tab_items = $( "ul:first li", $tabs ).droppable({
        accept: ".connectedSortable li",
        hoverClass: "ui-state-hover",
        drop: function( event, ui ) {
            var $item = $( this );
            var $list = $( $item.find( "a" ).attr( "href" ) )
            .find( ".connectedSortable" );

            ui.draggable.hide( "slow", function() {
                $tabs.tabs( "option", "active", $tab_items.index( $item ) );
            $( this ).appendTo( $list ).show( "slow" );
            });
        }
    });
});
  });
</script>

html:

<div id="tabs">
<ul>
    <li><a href="#Category1">Category1</a></li>
    <li><a href="#Category2">Category2</a></li>
</ul>

<div id="Category1">
    <ul id="sortable-Category1" class="connectedSortable ui-helper-reset">
        <li class="ui-state-default">Forum 1</li>
        <li class="ui-state-default">Forum 2</li>
    </ul>
</div>
<div id="Category2">
    <ul id="sortable-Category2" class="connectedSortable ui-helper-reset">
        <li class="ui-state-default">Forum 3</li>
        <li class="ui-state-default">Forum 4</li>
    </ul>
</div

但现在,当我重新订购商品时更改列表中的某些内容时,我会喜欢这样。 我知道如何通过 AJAX 等将更改写入数据库,但是当拖放列表中的内容时调用什么方法 + 我如何在上面的现有 javascript 中实现它?

有没有一种方法可以获取格式为“[id-of-the-li-item]-[number in the list]”的列表顺序,以便我可以使用数据库中的字段命名为“order”,其中指定了项目的顺序?

我想要实现的是:我有一个包含类别和论坛的论坛。我想使用上面的代码对论坛/类别进行排序(一个类别中的论坛顺序和将论坛移动到其他类别)

最佳答案

        $( ".connectedSortable" ).sortable({
            update: function (event, ui) {
                var newSeq = [], p = ui.item.parent(), parentId = p.parent().prop('nodeName') === "LI" ? p.parent().attr('id') : 0;
                ui.item.parent().children().each(function () {
                    newSeq.push(this.id);
                });
                // here you have newSeq... now update it via ajax
            }
        });

这依赖于元素的 ID。 newSeq[]

中会有id

关于javascript - jQuery 保存可排序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16465065/

相关文章:

javascript - 如果 CSS 位置稍后设置为静态以外的任何值,则 jQuery 位置方法返回不同的值

javascript - 使用文本框动态取消选中容器中的所有复选框

javascript - Angular 加载 css 文件需要时间并在控制台中抛出错误

javascript - 在我的自定义模态框内滚动

html - 使三 Angular 形动画拉伸(stretch)而不是移动

javascript - 如何使用 javascript 检查单选按钮是否被选中

jquery 文件另存为对话框

jquery - 如何使用 css3 动画沿 flex 路径为球设置动画?

html - 在 Chrome 中使用 CSS 打印目录的页码

html - html 元标记的顺序重要吗?