2016-08-28 62 views
1

我正在使用jQuery可排序以允許用戶在頁面上移動元素。每個div元素都有一個唯一的ID。當用戶使用另一個頁面交換頁面上的元素時,我還想交換這些元素ID並提醒新的ID列表的順序,因此我可以將此新訂單保存到後端。如何在用戶移動元素時使用jQuery排序來更新div ID?

我很努力地獲取用戶移動元素時的子元素ID。我的jQuery到目前爲止是:

$(function() { 
    $("#sortable").sortable({ 
     stop: function(ev, ui) { 
     var children = $('#sortable').sortable('refreshPositions').children(); 
     alert('Positions: '); 
     $.each(children, function() { 
      alert($(this).attr('id')); 
     }); 
     } 
    }); 
    $("#sortable").disableSelection(); 
    var drag_id = $('.container').attr("id"); 
    }); 

但警報消息總是undefined。如何在用戶進行更改時交換div ID,並將其保存到數組中,然後alert這個數組?

FIDDLE

回答

1

必須爲li標籤設置ID:

$(function() { 
    $("#sortable").sortable({ 
     stop: function(ev, ui) { 
     var children = $('#sortable').sortable('refreshPositions').children(); 
     alert('Positions: '); 
     $.each(children, function() { 
      alert($(this).attr('id')); 
     }); 
     } 
    }); 
    $("#sortable").disableSelection(); 
    var drag_id = $('.container').attr("id"); 
}); 

檢查小提琴現在:

Fiddle

+0

感謝您的回答。這解決了警報問題,但移動時不會交換<'li>'的ID。 – kevinabraham

+0

https://jsfiddle.net/7rbv20yd/6/檢查這將創建ID的順序 –

+0

謝謝你的作品。 – kevinabraham

1

下面的代碼或將有所幫助?

$(function() { 
    $("#sortable").sortable({ 
    stop: function(ev, ui) { 
     var children = $('#sortable').sortable('refreshPositions').find(".container"); 

     $.each(children, function() { 
     alert($(this).attr('id')); 
     }); 
    } 
    }); 
    $("#sortable").disableSelection(); 
    var drag_id = $('.container').attr("id"); 
}); 
+1

謝謝您的回答@ kamiya55。這解決了警報問題。但是不交換元素的ID?例如'

1
'位置'1'與位置4處的'
4
'交換。更新的代碼應該是:'
4
''
1
' – kevinabraham

相關問題