我有這樣的DIV結構,並希望使用以下選項進行排序。如何在Jquery中按屬性排序Div
- 最優價格新
- 精選
- 價格下降
- 價格高達
DIV結構
<div class="product-result-panel product-list">
<div class="show-all-products">
<div class="ProductList product filter-enable">
<a href="image1.jpg" data-productid="1870" data-price="29.99" data-msrp="59.99" data-isfeatured="" data-isnew="" data-gender="WOMENS" data-colour="BLUE">
</div>
<div class="ProductList product filter-disable">
<a href="image2.jpg" data-productid="1871" data-price="46.99" data-msrp="59.99" data-isfeatured="10" data-isnew="" data-gender="WOMENS" data-colour="PURPLE">
</div>
<div class="ProductList product filter-enable">
<a href="image3.jpg" data-productid="1872" data-price="19.99" data-msrp="59.99" data-isfeatured="" data-isnew="44" data-gender="MENS" data-colour="ORANGE">
</div>
<div class="ProductList product filter-enable">
<a href="image4.jpg" data-productid="1872" data-price="59.99" data-msrp="99.99" data-isfeatured="" data-isnew="12" data-gender="MENS" data-colour="BLACK">
</div>
</div>
</div>
排序標準
因此,當用戶選擇,它應該只分選出filter-enable
div的使用數據,價格屬性和排序由低到高,filter-enable
是在網頁上顯示和filter-disable
隱藏在DOM
jQuery代碼走到這一步,
// DropDownList change event
$(document).on('change', ".sorting", function (e) {
e.preventDefault();
var sortString = $(".sorting option:selected").val();
SortBy(sortString);
});
function SortBy(sortString) {
switch(sortString) {
case "featured":
{
sortUsingNestedText($('.show-all-products'), ".ProductList:visible", "data-isfeatured");
break;
}
case "whats-new":
{
sortUsingNestedText($('.show-all-products'), ".ProductList:visible", "data-isnew");
break;
}
case "price-down":
{
sortUsingNestedText($('.show-all-products'), "div", "data-price");
break;
}
case "price-up":
{
sortUsingNestedText($('.show-all-products'), "div", "data-price");
break;
}
}
}
function sortUsingNestedText(parent, childSelector, keySelector) {
var items = parent.children(childSelector).sort(function (a, b) {
var vA = $(keySelector, a).text();
var vB = $(keySelector, b).text();
return (vA < vB) ? -1 : (vA > vB) ? 1 : 0;
});
parent.append(items);
}
ERROR
沒有錯誤,但是它沒有做任何的排序,只有第一和第二DIV的越來越排序。不是所有的人。是否因爲某些DIV沒有數據特徵,數據是新值?
讓我查一下,並讓你知道... –
我覺得你有我有....事情是工作..但因爲我在價格上有小數...它仍然沒有完全整理吧.. 。 –
您可以使用JavaScript parseFloat函數 – Adeptus