Привет, у меня проблемы с запуском .each () один раз для каждого элемента, на который он смотрит.
Итак, на сайте электронной коммерции есть страница со списком продуктов, каждый продукт содержит div # productListings .productListItem и внутри этого div есть некоторые данные, включая цену .itemPrice .
Я пытаюсь заставить ее просматривать все продукты, содержащие div,возьмите цену, разделите ее на 20% и покажите новую цену чуть ниже:
$( "#productListings .productListItem" ).each(function() {
var PLPpriceStripped = ($('.itemPrices .pri', this).text()).replace(/[^0-9.]/g, '');
var PLPdiscount = (PLPpriceStripped/100)*20;
var PLPnewPrice = PLPpriceStripped-PLPdiscount;
$('<div class="nowPrice">' + 'Discounted Price*: £' + PLPnewPrice + '</div>').insertAfter('.itemPrice', this);
});
Когда я запускаю ее, она возвращает £ 0 в качестве значения (что означает, что мой код не работает должным образом), нотакже дублирует это один раз для каждого продукта на странице под каждым продуктом на странице.
Я, очевидно, не получил 100-процентное сцепление с .each (), но он также не возвращает правильные цены для каждого продукта..
Любая помощь, пожалуйста?
JSfiddle: https://jsfiddle.net/1bqh2f90/7/
$(document).ready(function(){
$( "#productListings .productListItem" ).each(function() {
var PLPpriceStripped = ($('.itemPrices .pri', this).text()).replace(/[^0-9.]/g, '');
var PLPdiscount = (PLPpriceStripped/100)*20;
var PLPnewPrice = PLPpriceStripped-PLPdiscount;
$('<div class="nowPrice">' + 'Discounted Price*: £' + PLPnewPrice + '</div>').insertAfter('.itemPrice', this);
});
});
#productListings {
display:block;
font-size:0;
}
#productListings .productListItem {
display:inline-block;
margin:1%;
width:48%;
}
#productListings .productListItem img {
display:block;
width:100%;
}
#productListings .productListItem .prices {
display:block;
padding:10px;
}
#productListings .productListItem .was {
display:inline-block;
padding:10px;
text-decoration: line-through;
font-size:12px;
}
#productListings .productListItem .pri {
display:inline-block;
padding:10px;
font-size:12px;
}
.nowPrice {
display:block;
padding:10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<section id="productListings">
<div class="productListItem">
<img src="http://demo.geekslabs.com/materialize/v2.2/layout03/images/img4.jpg" />
<div class="productName">
</div>
<div class="itemPrices">
<div class="was">Was £20</div> <div class="pri">Now £15</div>
</div>
</div>
<div class="productListItem">
<img src="http://demo.geekslabs.com/materialize/v2.2/layout03/images/img4.jpg" />
<div class="productName">
</div>
<div class="itemPrices">
<div class="pri">Now £20</div>
</div>
</div>
<div class="productListItem">
<img src="http://demo.geekslabs.com/materialize/v2.2/layout03/images/img4.jpg" />
<div class="productName">
</div>
<div class="itemPrices">
<div class="pri">Now £50</div>
</div>
</div>
<div class="productListItem">
<img src="http://demo.geekslabs.com/materialize/v2.2/layout03/images/img4.jpg" />
<div class="productName">
</div>
<div class="itemPrices">
<div class="was">Was £50</div> <div class="pri">Now £30</div>
</div>
</div>
</section>