2012-05-22 30 views
11

Làm cách nào để bạn thêm một mục đang được kéo vào phần tử đích khi thả, sử dụng các trình kéo/thả của jQueryUI? Có vẻ như cách jQuery UI hoạt động ngay bây giờ là nó chỉ di chuyển các mục xung quanh trên màn hình thông qua định vị tuyệt đối. Thật không may, chức năng này làm cho hình thức đệ trình vô ích, vì bạn không thể có được vị trí của các giá trị khi gửi.Giao diện người dùng JQuery - Nối thêm có thể kéo được vào Droppable

Cảm ơn trước cho bất kỳ mục/con trỏ nào!

+1

Theo kinh nghiệm của tôi, nó thực sự làm thay đổi DOM để phản ánh vị trí mới; Tôi biết vì tôi cập nhật danh sách (thông qua AJAX) với nó và điều đó liên quan đến việc quét thứ tự div mới trong cuộc gọi lại 'hoàn thành'. Bạn đang cố làm gì vậy? – Sp4cecat

+0

Chính xác thì bạn đang cố gắng làm gì? Có vẻ như bạn có thể đang tìm kiếm loại có thể sắp xếp thay vì kéo: http://jqueryui.com/demos/sortable/ –

Trả lời

23

Nếu tôi hiểu chính xác, bạn muốn phần tử kéo được tách ra khỏi phần tử hiện tại của nó và được nối vào phần tử mới, phải không? Bạn có thể sử dụng helper để thực hiện thao tác kéo (vì vậy phần tử gốc không bị ảnh hưởng) và khi thả, tách nó ra và gắn nó vào đích (nhờ @Oleg và @Brian để cải thiện câu trả lời gốc của tôi).

$(myDraggable).draggable({ 
    helper:"clone", 
    containment:"document" 
}); 

$(myDroppable).droppable({ 
    drop:function(event, ui) { 
     ui.draggable.detach().appendTo($(this)); 
    } 
}); 

dụ Làm việc tại jsFiddle

+0

Cảm ơn bạn rất nhiều vì đã giúp bạn! Tôi thực sự đánh giá cao thời gian và công sức cần thiết để bạn viết điều này! – user1110302

+0

Điều này rất hữu ích, Cảm ơn –

+2

Bạn không cần phải sử dụng bất kỳ biến toàn cục nào cho điều đó - ui.helper là đối tượng jq có thể kéo của bạn. Bạn có thể loại bỏ các phương thức start/stop, và khi thả nó phải là ui.helper.detach(). AppendTo ($ (this)). – Oleg

Các vấn đề liên quan