我有一个类别页面,我在其中显示不同的产品。在每个产品中,我都有一个显示价格,保存价格和新价格的部分。只是为了说明是价格的结构:
<p class="old-price">
<span class="price-label">Was</span>
<span class="price" id="old-price-65848">
<span class="price">
<span class="currency">£</span>
</span>
</span>
</p>
目前在使用jQuery的产品页面上,我可以获得价格并将其转换为数字:
var oldPrice = parseFloat(jQuery('.old-price .price .price').first().text().replace(/[^0-9\.]+/g, ""), 10);
这一切都在产品页面上运行正常,您只有一个价格块。然而,当我进入类别页面时,我有多个块使用相同的结构和相同的类,上面的代码只选取第一个块而忽略其余的块。这可以通过以下方式轻松显示:
console.log(oldPrice, "%");
如何修改代码以便它会在类别页面上选取所有Was Price
?
编辑:
我已设法使用波纹管代码映射旧价格和保存价格。但是我试图在条件为:
的情况下执行数学函数var oldPrices = jQuery('.old-price .price .price').map(function(){
return parseFloat(jQuery(this).text().replace(/[^0-9\.]+/g, ""), 10);
})得到();
var specialPrices = jQuery('.special-price .price .price').map(function() {
return parseFloat(jQuery(this).text().replace(/[^0-9\.]+/g, ""), 10);
})得到();
var youSave = specialPrices / (oldPrices / 100);
不幸的是它返回NaN值
PS:所有价格都是动态生成的。
由于
答案 0 :(得分:2)
您可以映射它以获取数组:
var oldPrices = jQuery('.old-price .price .price').map(function(){
return parseFloat($(this).text().replace(/[^0-9\.]+/g, ""), 10);
}).get();
console.log(oldPrices);
据说,您最好设置一个data-*
属性来处理每个元素特定的旧价格,例如:<p class="old-price" data-old-price="12345">
。
顺便说一句,您的代码段似乎与您发布的HTML标记无关,除了ID属性之外,没有旧的价格值可以检索。