javascript - 如何在可排序的两个 UL 之间重新排列 li id?

标签 javascript jquery html jquery-ui

注意:更新的问题

下面是 HTML,

 <ul id="sortable1" class="connectedSortable">
  <li id="listItem_1">test1</li>
  <li id="listItem_2">test2</li>
  <li id="listItem_3">test3</li>
 </ul>

第二个 UL 就像,

 <ul id="sortable2" class="connectedSortable">
  <li id="secondlistItem_1">second test1</li>
  <li id="secondlistItem_2">second test2</li>
  <li id="secondlistItem_3">second test3</li>
 </ul>

jquery 可排序代码就像,

jQuery(function() {
    jQuery( "#sortable1, #sortable2" ).sortable({
        connectWith: ".connectedSortable",
    update : function () { 

        jQuery.post(BASE_URL+"tabs/index", jQuery('#sortable1').sortable('serialize'),
            function(data) {
               //alert(data);         
            });                           
    }
    }).disableSelection();   
});

我在更新事件上调用ajax函数并使用serialize传递所有li位置,这样我就可以轻松更新li位置。但是当我们从第二个 UL li 放置到第一个 UL LI 时,需要在调用更新事件之前用新的 id 和位置更新新附加的 LI。

一旦用户更改了 LI,如何使用来自 sortable2 或自身的新附加 li 重新排列 li id?

例如,用户在两个 UL 之间进行一些更改,例如,

 <ul id="sortable1" class="connectedSortable">
  <li id="secondlistItem_1">second test1</li>
  <li id="listItem_1">test1</li>
  <li id="listItem_3">test3</li>
 </ul>

上面的 UL 应该重新排列 li id,如

 <ul id="sortable1" class="connectedSortable">
  <li id="listItem_1">second test1</li>
  <li id="listItem_2">test1</li>
  <li id="listItem_3">test3</li>
 </ul>

是否可以在 receive 事件中执行此操作?请帮助我解决这个问题

最佳答案

我正在使用以下方式重新生成我的 ul li id,

jQuery(function() { 
    jQuery( "#sortable1, #sortable2" ).sortable({
        connectWith: ".connectedSortable",
        receive : function(event, ui){
           jQuery('#sortable1 li').each(function(index) {
                jQuery(this).attr('id','listItem_'+parseInt(index+1));
                console.log(index + ': ' + jQuery(this).attr('id'));
            });        
           jQuery('#sortable2 li').each(function(index) {
                jQuery(this).attr('id','secondlistItem_'+parseInt(index+1));
                console.log(index + ': ' + jQuery(this).attr('id'));
            })            
        },
        update : function () {

           var order1 = jQuery('#sortable1').sortable('serialize'); 
            jQuery.post(BASE_URL+"appbuilder/tabs/index", jQuery('#sortable1').sortable('serialize'),
                function(data) {
                       console.log(data);
                });       
            jQuery.post(BASE_URL+"appbuilder/tabs/index", jQuery('#sortable2').sortable('serialize'),
                function(data) {
                            console.log(data);
                });                    
        }
    }).disableSelection();   
});

关于javascript - 如何在可排序的两个 UL 之间重新排列 li id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10546879/

相关文章:

javascript - 使用 jQuery 在客户端搜索表

jQuery 的 Flexigrid 在标题中显示/隐藏列功能

html - 使 <a> 标记采用内联 block 父级的 100% 高度

html - 无法在页面上水平拉伸(stretch)页脚

javascript - 我不明白数组是如何工作的

javascript - 选择输入时启用/禁用某些复选框 ="radio"

javascript - 防止 Internet Explorer 滚动焦点

jquery - Firebug 显示对象数组多了 1 个元素

javascript - jQuery UI Accordion 无法在本地目录的 Safari 中工作

javascript - 检测到 "empty"区域的点击