2010-08-14 12 views
7

"sürüklenebilir div'ler -> çakışma yok" demek mümkün mü?JQuery sürüklenebilir - Üst üste binme yok

Sanırım ana sorun şu şekilde: mutlak; ... sağ?

tür reagards Peter sıralama gibi bir şeyden sonra aslında olmadıkça jQuery UI draggable çarpışma algılama için yerleşik bir işlevi yoktur

+2

Merhaba Peter, bilmiyorum çünkü yaptığınız şeyin bir örneğini vermeyi unuttunuz! Pozisyonu kullandığınızı tahmin edebiliriz: mutlak bir yer ve bazı div'ler, ama başka hiçbir şey bilmiyoruz! – Fenton

cevap

5

. İstediğiniz şey için yerleşik olan en yakın şey, sortable's plceholder, which looks like this.

Kısa sürüm, her sürüklenen öğe ile çarpışma algılaması performans açısından (öğe sayısına bağlı olarak) önemsizdir, bu nedenle çok nadir bir istek olduğundan kitaplıktan çıkarılır. Çarpışma tespitine gerçekten ihtiyacınız varsa, çarpışmaları draggable's drag event içinde kendiniz hesaplayabilirsiniz.

15

jquery-collision artı jquery-ui-draggable-collision deneyebilirsiniz. Tam açıklama: Sadece bunları kaynak kodunda yazdım ve yayınladım.

öncelikle bu izin verir:

"#collider" örtüşen tüm ".obstacle" listesidir
var hit_list = $("#collider").collision(".obstacle"); 

. bağlanma (diğer şeyler arasında) verir

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

, bir "çarpışma" olayı:

ikinci verir

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

Ve hatta ayarlayabilirsiniz:

$("#collider").draggable({ obstacle: ".obstacle", preventCollision: true }); 
"#collider" öğesini sürüklerken herhangi bir ".obstacle" ile örtüşmesini önlemek için

.

+3

jQuery sürüm 1.8.20 ile% 100 çalışmaz. Alternatif, sağlanan 1.8.12 sürüm – 321X

+1

@ 321X'i kullanmaktır - teşekkürler, neden 1.8.20 ile çalışmadığına bakacağım - bir örnekle bir hata düzeltme biletini sourceforge'de dosyalayabilir misiniz, lütfen? – eruciform

+1

@ 321X - kütüphaneyi güncelledi. Şimdi 1.8.20 ile çalışmalı. – eruciform