Спасибо за помощь, однако требуется сортировка по тексту внутри контейнера. А не по значению тега контейнера. Скрипт должен искать теги с указанным id или class, получать первую букву или цифру внутри этого тега, и сортировать блоки по ним.
Искать дочерние элементы удобно с помощью find(), если элемент это "a" (ну, передаваемый в функцию сортировки), и нужно взять его содержимое, будет a.find('#id1').text() - если по id = id1 a.find('.class1').text() - если по class = class1
Если ближе к примеру в посте - в функцию сортировки должны попасть пара div с class=bigdiv, внутри функции сортировки надо взять a.find('.first').text() - для первого div это выражение вернет 'Собака'
Еще понадобится div, который оборачивает все сортируемое, для примера
Тогда должно получиться что-то вроде
var $wrapper = $('.tosort');
$wrapper.find('.bigdiv').sort(function(a, b) { av = a.find('.first').text(); bv = b.find('.first').text(); return av < bv ? -1 : ((av > bv) ? 1 : 0); }) .appendTo($wrapper);
Если где-то опечатки, сорри, код в браузере не проверял.
Comments 4
https://stackoverflow.com/questions/14160498/how-can-i-sort-elements-by-numerical-value-of-data-attribute
Что Вам будет удобнее в функции сортировки - .dataset или .getAttribute или какой еще способ обращения - смотрите сами.
https://html5.by/blog/dataset/
Reply
Reply
a.find('#id1').text() - если по id = id1
a.find('.class1').text() - если по class = class1
Reply
Еще понадобится div, который оборачивает все сортируемое, для примера
Тогда должно получиться что-то вроде
var $wrapper = $('.tosort');
$wrapper.find('.bigdiv').sort(function(a, b) {
av = a.find('.first').text();
bv = b.find('.first').text();
return av < bv ? -1 : ((av > bv) ? 1 : 0);
})
.appendTo($wrapper);
Если где-то опечатки, сорри, код в браузере не проверял.
Reply
Leave a comment