Я пытаюсь использовать функцию jquery replaceWith (), чтобы заменить существующие div, имеющие класс «question», теми же div, только отсортированными в алфавитном порядке.
Сортировка работает, и кажется, что замена работает, хотя кажется, что они заменяются бесконечно много раз, когда я хочу заменить их только один раз.
Я хочу заменить эти div с классом '.question' на те же самые div, хотя они просто отсортированы по
. Ниже приведен скриншот исходного HTML.Обратите внимание, что есть 31 div.
Вот мой код javascript:
$(document).ready(function()
{
// Sorting function
function getSorted(selector, attrName)
{
return $($(selector).toArray().sort(function(a, b)
{
var aVal = parseInt(a.getAttribute(attrName)),
bVal = parseInt(b.getAttribute(attrName));
return aVal - bVal;
}));
}
var sortedItems = getSorted('div.question', 'data-answerCount').clone();
var unsortedQuestionItems = $('.question');
console.log("Replacing unsorted question items with sorted question items");
console.log("oldArray is of length: " +unsortedQuestionItems.length);
console.log("newArray is of length: " +sortedItems.length);
unsortedQuestionItems.replaceWith(sortedItems);
console.log("Replacing completed.");
var afterReplaced = $('.question');
console.log("After replacing, the length of .question is: " +afterReplaced.length);
}); //ends the document.ready function
Когда я пытаюсь загрузить страницу, она заменяет эти div (на вид) бесконечно много раз, сследующий вывод консоли:
Сортировка вроде бы работает, но я не хочу, чтобы она добавлялась бесконечно много раз!Я просто хочу, чтобы эти 31 div были отсортированы и отображены один раз.Есть идеи?