farklardan biri sürüklenebilir ile üzerinde değil dönüşümü olmasıdır elemanlar kendilerini, ama ebeveyn üzerinde. Bu yüzden biraz mantığı değiştirir.
Bu özel durum için bir çözüm var, ancak duruma bağlı olarak değişebileceğini göreceksiniz. Örneğin, dönüşüm kökenini değiştirirseniz veya yatay bir sıralanabirseniz, uyarlanmış olması gerekir. Ama mantık aynı kalır:
var zoomScale = 0.5;
$(".container")
.sortable({
sort: function(e, ui) {
console.log(ui.position.left)
var changeLeft = ui.position.left - ui.originalPosition.left;
// For left position, the problem here is not only the scaling,
// but the transform origin. Since the position is dynamic
// the left coordinate you get from ui.position is not the one
// used by transform origin. You need to adjust so that
// it stays "0", this way the transform will replace it properly
var newLeft = ui.originalPosition.left + changeLeft/zoomScale - ui.item.parent().offset().left;
// For top, it's simpler. Since origin is top,
// no need to adjust the offset. Simply undo the correction
// on the position that transform is doing so that
// it stays with the mouse position
var newTop = ui.position.top/zoomScale;
ui.helper.css({
left: newLeft,
top: newTop
});
}
});
http://jsfiddle.net/aL4ntzsh/5/
DÜZENLEME:
Önceki cevap konumlandırma için çalışır, ancak iyi Dabbler tarafından işaret olarak, doğrular kesişim işlevi ile bir kusur var olacak bir sıralama yapılmalıdır. Temel olarak, pozisyonlar doğru bir şekilde hesaplanır, ancak öğeler, dönüştürülmeyen genişlik ve yükseklik değerlerini tutar ve bu da soruna neden olur. Bu değerleri, ölçek faktörünü dikkate almak için başlangıç olayında değiştirerek ayarlayabilirsiniz. Örneğin bu gibi:
Sorununu iki şey vardır
start: function(e, ui) {
var items = $(this).data()['ui-sortable'].items;
items.forEach(function(item) {
item.height *= zoomScale;
item.width *= zoomScale;
});
}
http://jsfiddle.net/rgxnup4v/2/
Ben bu soru için bir ödül başladı.Her ne kadar bu sorunun büyük bir kitleye geniş çapta uygulanabileceğini düşünmese de, * sorgulu olay işleyicilerinde tam olarak ayarlanması gerekenleri ele alan kanonik bir yanıt görmeyi seviyorum ve jQuery sürüklenebilir çözümü neden önerdi? OP’de [başvurulan SO sorusu] (https://stackoverflow.com/q/10212683/165154), jquery sıralayıcılarına uygulanamaz. –