#javascript #html #jquery #node.js
Вопрос:
Я пытаюсь добавить товар в корзину с помощью jQuery, ajax. Но проблема в том, что когда я использую приведенный ниже код, он возвращает только идентификатор продукта первого div. Мои продукты динамически извлекаются из базы данных. Мне нужен идентификатор продукта каждого div при нажатии на кнопку «Добавить в корзину» внизу.
Как я могу получить идентификатор продукта каждого div при нажатии <p class="btn-icon" value="<%= products[i].id %>" id="value" style="cursor: pointer;">
?
Код Jquery
<script>
$(document).ready(function() {
$('#value').on('click', function(){
alert($(this).attr('value'))
})
})
</script>
продукт.ejs
<% for( let i = 0; i<products.length; i ) { %>
<div class="col-xs-6 col-sm-6 col-md-4 col-lg-4 product-item">
<div class="pd-bd product-inner">
<div class="product-img">
<a href="#"><img src="../<%= products[i].image[0] %>" alt="" class="img-reponsive"></a>
<div class="ribbon-price red"><span id="discount"><%= products[i].discount %>%</span></div>
</div>
<div class="product-info">
<div class="color-group"></div>
<div class="element-list element-list-left">
<ul class="desc-list">
<%- products[i].description %>
</ul>
</div>
<div class="element-list element-list-middle">
<div class="product-rating bd-rating">
<span class="star star-5"></span>
<span class="star star-4"></span>
<span class="star star-3"></span>
<span class="star star-2"></span>
<span class="star star-1"></span>
<div class="number-rating">( 896 reviews )</div>
</div>
<p class="product-cate"><%= products[i].category[0].category %></p>
<h3 class="product-title"><a href="#"><%= products[i].title %></a></h3>
<% if(products[i].discount != 0) { %>
<% let orginalPrice = products[i].price %>
<% let discount = products[i].discount %>
<% let newPrice = orginalPrice - (orginalPrice/100)*discount %>
<% console.log(newPrice) %>
<div class="product-bottom">
<div class="product-price">
<span class="red" id="new">Rs. <%= newPrice %></span>
<span class="old" id="old">Rs. <%= products[i].price %></span>
</div>
<a href="#" class="btn-icon btn-view">
<span class="icon-bg icon-view"></span>
</a>
</div>
<% } else { %>
<div class="product-bottom">
<div class="product-price"><span>Rs. <%= products[i].price %> </span></div>
<a href="#" class="btn-icon btn-view">
<span class="icon-bg icon-view"></span>
</a>
</div>
<% } %>
<!-- <div class="product-bottom-group">
<button class="btn-icon" id="add-to-cart">
<span class="icon-bg icon-cart" id="add-to-cart"></span>
</button>
<a href="#" class="btn-icon">
<span class="icon-bg icon-wishlist"></span>
</a>
<a href="#" class="btn-icon">
<span class="icon-bg icon-compare"></span>
</a>
</div> -->
<div class="product-button-group">
<p class="btn-icon" value="<%= products[i].id %>" id="value" style="cursor: pointer;">
<span class="icon-bg icon-cart"></span>
</p>
<p href="#" class="btn-icon" style="cursor: pointer;">
<span class="icon-bg icon-wishlist"></span>
</p>
<p href="#" class="btn-icon" style="cursor: pointer;">
<span class="icon-bg icon-compare"></span>
</p>
</div>
</div>
</div>
</div>
</div>
<% } %>
Комментарии:
1. Вместо извлечения по идентификатору, почему бы не получить по классу? Вам нужно будет добавить значение класса к каждому элементу.
2. даст ли это результат?
3. Какой div содержит идентификатор продукта?
4.
<p class="btn-icon" value="<%= products[i].id %>" id="value" style="cursor: pointer;">
эта конкретная строка содержит идентификатор продукта
Ответ №1:
Вместо использования динамического идентификатора используйте имя класса.
<script>
$(document).ready(function() {
$('.btn-icon[value]').on('click', function(){
alert($(this).attr('value'))
})
})
</script>
.btn-icon[value]
Селектор возвращает все элементы с классом btn-icon
, которые имеют value
атрибут.
Ответ №2:
Нет необходимости в удостоверении личности. Просто используйте правильный селектор, чтобы определить первый <p>
тег в каждом из .product-button-group
дивов:
$('.product-button-group > p:first-child').on('click', function(){
alert($(this).attr('value'))
})
Комментарии:
1. Спасибо, чувак, это сработало. Просто хотел узнать, как выбрать второго и третьего ребенка?
2. @xetryDcoder Вы можете использовать
.product-button-group > p:nth-child(2)
для выбора 2-го ребенка. Измените 2 на 3 для 3-го ребенка.