Có vẻ như tùy chọn 'lưới' trong hàm tạo của Draggable tương đối bị ràng buộc với toạ độ gốc của phần tử đang được kéo - vì vậy chỉ cần đặt, nếu bạn có ba div có thể kéo bằng đầu đặt tương ứng 100, 200, 254 pixel so với bố mẹ:Lưới có thể kéo của jQuery
<div class="parent-div" style="position: relative;">
<div id="div1" class="draggable" style="top: 100px; position: absolute;"></div>
<div id="div2" class="draggable" style="top: 200px; position: absolute;"></div>
<div id="div3" class="draggable" style="top: 254px; position: absolute;"></div>
</div>
ADN tất cả trong số họ đang nhận được kích hoạt cho kéo với 'lưới' thiết lập để [1, 100]:
draggables = $('.draggable');
$.each(draggables, function(index, elem) {
$(elem).draggable({
containment: $('#parent-div'),
opacity: 0.7,
revert: 'invalid',
revertDuration: 300,
grid: [1, 100],
refreshPositions: true
});
});
vấn đề ở đây là đó là s khi bạn kéo div3, ví dụ, xuống, nó được tăng lên 100, di chuyển nó lên 354px thay vì chỉ tăng thêm 46px (254 + 46 = 300). dừng trong lưới - 300px, nếu chúng ta đang xem parent-div làm điểm tham chiếu và "bộ giữ lưới".
Tôi đã xem xét các nguồn có thể kéo và dường như là một lỗ hổng trong xây dựng - chúng chỉ thực hiện tất cả các phép tính liên quan đến vị trí ban đầu của phần tử có thể kéo được.
Tôi muốn tránh khỉ vá mã của thư viện có thể kéo và những gì tôi thực sự tìm kiếm ở đây là cách làm cho Draggable tính toán vị trí lưới liên quan đến cha mẹ chứa. Tuy nhiên nếu khỉ vá là không thể tránh khỏi, tôi đoán tôi sẽ phải sống với nó.
-1 kể từ khi liên kết với giải pháp đã chết – ThiefMaster
Bài đăng này đã hơn một tuổi, nhưng đủ công bằng. –
Ah xin lỗi, không nhìn vào ngày tháng. Sẽ tuyệt vời nếu bạn cập nhật bài đăng, ví dụ: nổi bật liên kết. – ThiefMaster