मैं mousemove
घटना को सुन एक sortable खींचते समय से एक समाधान कर दिया। Mousemove पर, यह sortables
में सभी तत्वों की जांच करता है और वर्तमान में ड्रैग किए गए तत्व को इसके ऊपर घुमाता है या नहीं (शून्य सहनशीलता के साथ इसके साथ छेड़छाड़ करता है - यदि यह तत्व को एक पिक्सेल द्वारा कवर करता है, तो यह छेड़छाड़ करता है)। कोड बहुत विस्तृत है ताकि आप देख सकें कि क्या किया जा रहा है। http://jsfiddle.net/Vwd3r/2/
var sortables = $("li");
var draggedItem;
$("#sort").sortable({
start: function(event, ui) {
draggedItem = ui.item;
$(window).mousemove(moved);
},
stop: function(event, ui) {
$(window).unbind("mousemove", moved);
}
});
function moved(e) {
//Dragged item's position++
var d = {
top: draggedItem.position().top,
bottom: draggedItem.position().top + draggedItem.height(),
left: draggedItem.position().left,
right: draggedItem.position().left + draggedItem.width()
};
//Find sortable elements (li's) covered by draggedItem
var hoveredOver = sortables.not(draggedItem).filter(function() {
var t = $(this);
var pos = t.position();
//This li's position++
var p = {
top: pos.top,
bottom: pos.top + t.height(),
left: pos.left,
right: pos.left + t.width()
};
//itc = intersect
var itcTop = p.top <= d.bottom;
var itcBtm = d.top <= p.bottom;
var itcLeft = p.left <= d.right;
var itcRight = d.left <= p.right;
return itcTop && itcBtm && itcLeft && itcRight;
});
};
: sortable तत्वों इसकी चौड़ाई, सीमा आदि है, चौराहे-गणना
width()
और
height()
के बाद से थोड़ा दूर, हो सकता है इस मामले
यहाँ में सही मान नहीं लौटते एक डेमो है
ध्यान दें कि sortables
क्रमबद्ध वस्तुओं तक सीमित नहीं है, यह पृष्ठ पर कोई भी तत्व हो सकता है।
स्रोत
2010-08-06 23:48:03
जब आप "नीचे" कहते हैं, तो क्या आपका मतलब खींचने के बाद अनुक्रम में अगला तत्व है? या तत्व (ओं) जो फ़्लोटिंग ड्रैगगेबल के पीछे हैं? – MarkD
@ मार्कका: एक छवि अपलोड की गई – roosteronacid
.. लेकिन हाँ; फ़्लोटिंग तत्व के पीछे तत्व। – roosteronacid