У меня есть следующий html ul:
<ul id="actionList">
<li>
<span>
<h4>xyz</h4>
<div class="list">
<div class="item">
<p class="title">test2</p>
<button class="deleteButton" tabindex="-1">Delete</button>
</div>
<div class="item">
<p class="title">test3</p>
<button class="deleteButton" tabindex="-1">Delete</button>
</div>
<div class="item">
<p class="title">test1</p>
<button class="deleteButton" tabindex="-1">Delete</button>
</div>
</div>
</span>
</li>
<li>
<span>
<h4>abc</h4>
<div class="list">
<div class="item">
<p class="title">test5</p>
<button class="deleteButton" tabindex="-1">Delete</button>
</div>
<div class="item">
<p class="title">test4</p>
<button class="deleteButton" tabindex="-1">Delete</button>
</div>
<div class="item">
<p class="title">test6</p>
<button class="deleteButton" tabindex="-1">Delete</button>
</div>
</div>
</span>
</li>
</ul>
Я пытаюсь отсортировать .item
div в алфавитном порядке на основе .title
div.
Что япробовал:
var alphabeticallyOrderedDivs = $('.item').sort(function(a, b) {
var $aTitle = $(a).find('.title'), $bTitle = $(b).find('.title');
return String.prototype.localeCompare.call($aTitle.text().toLowerCase(), $bTitle.text().toLowerCase());
});
var container = $(".list");
container.detach().empty().append(alphabeticallyOrderedDivs);
container.parent().append(container);
К сожалению, похоже, ничего не получается.
Я думаю, что это связано с тем фактом, что .list
является классом, а не id, и, следовательно, их несколько.
Я попытался заменить container.parent()
на $('body')
, просто чтобы посмотреть, выводит ли он вообще что-либо, и обнаружил, что это сортировка .item
делений ... просто сбор их всех и сортировка.Это привело к тому, что у него было два набора всех тестов {1-6}.
Возможно ли это сделать?