Ich habe eine Funktion, um eine Blase sortieren unter Inhalt von verschiedenen div
s. Für jede Swap-Operation tauscht sie auch die divs mit JQuery Swapsies plugin
. Das Problem ist, tht macht es den Swap einmal, und danach für andere Swap-Operationen:JQuery - Swapping zwei Elemente funktioniert nicht nach dem ersten Zug
function swap(id1, id2){
$('#' +id1).swap({
target: id2,
opacity: "0.5",
speed: 1000,
callback: function() {
}
});
}
function bubbleSort() {
var ret=[];
$(".num-div").each(function(){ ret.push($(this));});
let swapped;
do {
swapped = false;
for (let i = 1; i < ret.length; ++i) {
if (ret[i - 1].html() > ret[i].html()) {
swap(ret[i-1].attr('id'), ret[i].attr('id'));
[ret[i], ret[i - 1]] = [ret[i - 1], ret[i]];
swapped = true;
}
}
} while (swapped);
return ret;
}
Im ersten Schritt, wo i=1
es funktioniert und Swaps ret[i-1]
mit ret[i]
, aber nach, dass es nicht Arbeit.
Was ist das Ergebnis Ausgabe von ret? Scheint ein asynchrones Problem zu sein. Und vielleicht sollte 'ret [i - 1] .html()' 'parseInt sein (ret [i - 1] .text())'? – Fefux
Auch für die Blasensortierung müssen Sie eine Iteration zurückgehen, wenn Sie einen Tausch durchführen. – Fefux
Es ist das sortierte Array. Es soll das Array sortieren und Divs mit der Funktion swap() verschieben. –