2009-12-27 20 views
6

là có cách nào để làm cho các div không chồng chéo nhau trong khi kéo qua jquery draggable()?là có một cách để làm cho divs không chồng lên nhau trong khi kéo qua jquery draggable [hoặc etc ..]?

tôi có một loạt các div mà người dùng có thể kéo xung quanh nhưng tôi không thể để chúng chồng lên nhau.

về cơ bản tôi đang tạo canvas nơi người dùng có thể tự do di chuyển nội dung của trang web xung quanh trang web nhưng không cần chồng lấp nội dung khác trong khi di chuyển chúng. bất kỳ ý tưởng?

+1

có tất cả các yếu tố kích thước giống nhau không? Bạn có thể muốn một cái gì đó giống như bản demo portlet có thể sắp xếp: jqueryui.com/demos/sortable/#portlets (mà thực sự chỉ là 3 cột có thể sắp xếp được kết nối với nhau), –

+5

http://stackoverflow.com/questions/773717/please- đề nghị-a-jquery-plugin-đó-xử lý-va chạm-phát hiện-cho-kéogable-e – Sampson

Trả lời

0

Bạn cần nhập mã jquery cho hiệu ứng ui có thể kéo. Phải có một dòng trong mã mà chỉ mục z của phần tử được thay đổi thành một số rất cao để nó xuất hiện trên tất cả các phần tử khác. Bạn có thể loại bỏ dòng này và nó nên làm cho nó để các yếu tố không thay đổi lớp dọc của họ khi kéo.

Tôi sẽ chạy tìm "z-index" trong tệp ui.

0

lý do tại sao không sử dụng .css('z-index') hoặc zIndex không chắc chắn. mà xử lý các over lapping. - đưa ra giá trị của các thành phần cần phải ở dưới cùng nhỏ hơn ví dụ: 1 - cung cấp giá trị của các thành phần cần phải ở số lớn nhất trên cùng, ví dụ: 3 - nếu bạn cần phần tử được kéo vào giữa sau đó cung cấp cho nó một giá trị 2.

hoặc u có thể sử dụng nó trên css như là một lớp mà z-index kiểm soát trùng lặp giữa các

1

tôi chưa bao giờ sử dụng plugin này bản thân mình, nhưng có vẻ như nó có thể là câu trả lời của bạn: Collidable Draggables.

2

Bạn có thể thử jquery-collision cộng jquery-ui-draggable-collision. Tiết lộ đầy đủ: Tôi vừa viết và phát hành chúng trên sourceforge.

Đầu tiên cho phép này:

var hit_list = $("#collider").collision(".obstacle"); 

đó là danh sách tất cả ".obstacle" trùng "#collider".

Thứ hai phép:

$("#collider").draggable({ obstacle: ".obstacle" }); 

nào mang đến cho bạn (trong số những thứ khác), một "va chạm" sự kiện để ràng buộc vào:

$("#collider").bind("collision", function(event,ui){...}); 

Và thậm chí bạn có thể thiết lập:

$("#collider").draggable({ obstacle: ".obstacle", preventCollision: true }); 

để ngăn chặn "#collider" không bao giờ chồng chéo bất kỳ ".obstacle" nào trong khi kéo.

+0

Tôi đã cố gắng để làm $ (". collider"). draggable ({obstacle: ".chướng ngại vật ", preventCollision: true}); có một div có cả hai class .collider và .obstacle và nó sẽ không di chuyển. Những gì tôi đang cố gắng làm là có một loạt các div giống nhau, và điều đó có thể được kéo nhưng không thể va chạm với nhau – lgomezma

+0

@ lgomezma - bạn không thể có thứ gì đó vừa là một va chạm và trở ngại riêng của nó, hiện tại, thành thật mà nói, tôi đã không nghĩ đến khả năng đó. sourceforge cho cả hai người, và tôi sẽ cố gắng làm cho một lựa chọn trong tương lai? – eruciform

+0

Tôi sẽ cảm ơn rất nhiều cho câu trả lời! – lgomezma

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