Im Interesse zu lernen, wie man das effizienter macht, bin ich neugierig auf irgendwelche Gedanken, wie man das verbessert oder wenn ich zusammen den falschen Weg gehe.JQuery Sortierbare Style-Funktion mit leeren Stellen
Bisher habe ich geschrieben, http://jsfiddle.net/mstefanko/LEjf8/9/
Diese Griffe im Grunde, was ich es auf einem kleinen Maßstab will.
Es gibt einige Bugs und ich bin überhaupt nicht zuversichtlich, dass dies so gut wie es geschrieben werden könnte, könnte ein Idiot sein, nicht versuchen, auf jquery ui sortierbar zu halten. Aber da ich dies ohne eine einfache Liste von Elementen tun musste und dies auf mehrere Drag and Drop erweitern wollte, wollte ich zumindest durchgehen, was ich tun musste, um dies zu erreichen, selbst wenn es nur darum ging, wie das funktioniert Sortierfunktionen wie diese funktionieren.
Das Problem Kind,
Das ist alles in einer Funktion auf dem Over-Ereignis des abwerfbaren()
ich eine Reihe von leeren Flecken
var emptyHolders = [];
$('.pipeline-holder').each(function(){
if($(this).hasClass('holder-empty')){
var eid = $(this).attr('id');
emptyHolders.push(eid.substring(14));
}
});
cid haben genannt ist das absenkbare Element, über dem du oben bist, also finde ich den nächsten offenen Schlitz unter Verwendung
for (var i = 0; i < emptyHolders.length; i++) {
var currentEmpty = emptyHolders[i];
if (currentEmpty > cid) {
nextEmpty = currentEmpty;
i = emptyHolders.length;
} else {
prevEmpty = parseInt(currentEmpty);
}
}
Wenn sich in der Liste ein leerer Steckplatz befindet, verwende ich eine for-Schleife, um die Elemente um das DOM herum zu verschieben, um Platz für das Löschen des Elements zu schaffen.
if (nextEmpty != null) {
var moveMe = nextEmpty -1;
for (var i = moveMe; i >= cid; i--) {
var nextcount = i + 1;
var me = $('#pipeline-rank-' + i);
var next = $('#pipeline-rank-' + i).parents('.pipeline-rank-row').next().find('.pipeline-holder');
var pid = $('#pipeline-rank-' + i).find('.content-wrapper').attr('id');
next.append($('#pipeline-rank-' + i).find('.content-wrapper'));
next.removeClass('holder-empty');
next.siblings('.remember-my-position-hover').html(pid);
}
$('#pipeline-rank-' + cid).addClass('holder-empty');
}
Wenn es nicht ein weiter unten in der Liste enthalten ist, kann ich das Gleiche in umgekehrter Richtung zu überprüfen, ob es eine Stelle über dem abwerfbaren ist es, Elemente zu drücken in.
Alle Gedanken werden sehr geschätzt!
Wenn Ihre Frage wirklich nur ist, wie man diesen "Arbeits" -Code verbessert und Sie kein spezifisches Problem haben, das Sie nicht lösen können, sollten Sie http://codereview.stackexchange.com in Erwägung ziehen –