Я пытаюсь сделать функцию поиска / сортировки для моего сайта, и все работает на 110% на FF.В chrome все работает, кроме dualSort, в котором он сортирует только по содержимому H4, а не по цене, а в IE / Edge при сортировке удаляет все дочерние элементы tBox.
function sortAscend() {
var sortAscend = $('.tBox').sort(function(a, b) {
return (parseFloat($(a).find(".tPrice").text().replace(/[^0-9]/g, '')) > parseFloat($(b).find(".tPrice").text().replace(/[^0-9]/g, '')) ? 1 : -1);
});
$("#DB").html('').append(sortAscend);
}
function sortDesc() {
var sortDesc = $('.tBox').sort(function(a, b) {
return (parseFloat($(a).find(".tPrice").text().replace(/[^0-9]/g, '')) < parseFloat($(b).find(".tPrice").text().replace(/[^0-9]/g, '')) ? 1 : -1);
});
$("#DB").html('').append(sortDesc);
}
function dualSort() {
var yearSort = $('.tBox').sort(function(a, b) {
var $year1 = parseFloat($(a).find("H4").text().replace(/[^0-9]/g, ''));
var $year2 = parseFloat($(b).find("H4").text().replace(/[^0-9]/g, ''));
var $price1 = parseFloat($(a).find(".tPrice").text().replace(/[^0-9]/g, ''));
var $price2 = parseFloat($(b).find(".tPrice").text().replace(/[^0-9]/g, ''));
if ($year1 === $year2) {
return (($year1 > $year2) ? -1 : ($price1 < $price2) ? 1 : 0);
} else {
return ($year1 > $year2 ? 1 : -1);
}
});
$("#DB").html('').append(yearSort);
}
<div id="DB">
<div class="tBox">
<H4>5 Bottles</H4>
<div class="tPrice">$12.95</div>
</div>
<div class="tBox">
<H4>10 Bottles</H4>
<div class="tPrice">$15.95</div>
</div>
<div class="tBox">
<H4>10 Bottles</H4>
<div class="tPrice">$19.95</div>
</div>
<div class="tBox">
<H4>3 Bottles</H4>
<div class="tPrice">$7.95</div>
</div>
</div>
Я пробовал:
parseFloat($(a).find(".tPrice").text(), 10) > parseFloat($(b).find(".tPrice").text(), 10) ? 1 : -1);});
и:
$('#DB').html(sortAscend);
И несколько плагинов, которые не работали, но то, что у меня есть в настоящее время - единственное, что работало за пределами FF.
Любой совет или помощь приветствуется.