2017-04-16 82 views
3

我试图从网站订购不同的产品,但无法正确执行。按产品订购元素价格

基本上我需要得到每一个的价格,并从最昂贵的订购他们到最少的一个。

我试着下面的代码,但它消失的一切,并以正确的方式一直没有命令他们:

var divList = $(".block-level.h2"); 
divList.sort(function(a, b){ 
    return $(a).data(".block-level.h2")-$(b).data(".block-level.h2") 
}); 
$(".grid").html(divList); 

我没有访问修改HTML所以它必须与我的代码完成现在,只能通过jQuery添加东西。

有人可以给我一个小费或帮助我吗?

谢谢。

回答

1

对于您对产品网格项进行排序的请求,可以使用jQuery代码。

var values = []; 
$('.block-level.h2').each(function() { 
    var temp = Array(); 
    temp['value'] = parseInt($(this).html().replace('$','')); 
    temp['element'] = $(this).closest('.grid-item'); 
    values.push(temp); 
}); 
values.sort(function(a,b) { return b.value - a.value; }); 
var sortedHtml = ''; 
$.each(values, function(index, obj) { 
    if((index+1)%3==1) { 
     sortedHtml+=('<div class="grid product-cards__row"><div class="grid-item one-third palm-one-whole product-cards__item">'+$(obj.element).html()+'</div>'); 
    } else if((index+1)%3==0) { 
     sortedHtml+=('<div class="grid-item one-third palm-one-whole product-cards__item">'+$(obj.element).html()+'</div></div>'); 
    } else { 
     sortedHtml+=('<div class="grid-item one-third palm-one-whole product-cards__item">'+$(obj.element).html()+'</div>'); 
    } 
}); 
$('.product-cards').html(sortedHtml); 

希望这会有所帮助!

+0

哇它的工作原理非常棒,非常感谢你@Shekhar Chikara,我真的很感谢你的宝贵帮助! – Cloud

+0

@Cloud很高兴帮助! –

1

您可以通过下面的代码 -

var values = Array(); 
$('.block-level.h2').each(function() { 
    values.push(parseInt($(this).html().replace('$',''))); 
}); 
values.sort(function(a, b){return b-a}); 

以上达到这个在您的代码 - 的主要问题是$(a).data(".block-level.h2")自其试图找到名字data-.block-level.h2在元素a不存在的属性。这就是为什么空的结果。

+0

非常感谢谢凯哈Chikara,订单现在罚款!我可以打扰你多一个问题吗?我试图移动产品以便在设计中显示顺序,你知道我该如何应用这个? – Cloud

+0

是的,所以如果你想保持页面上的顺序,你可以在应用sort()函数之前保存'values'数组。这将有原始序列。 –

+0

再次感谢您的回复,抱歉,可能我没有以正确的方式解释我需要什么。 一旦所有东西都是从最大到最小的顺序,我需要删除它们在网站中看到的实际包装,然后再次订购时再次显示它们。现在,在您的代码中,我通过控制台看到它们,但是当我尝试修改它以移动设计中的产品时,我并不完全明白。 再次感谢您的一切! – Cloud