Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Проблема с повторяющимися дивами (https://javascript.ru/forum/dom-window/71207-problema-s-povtoryayushhimisya-divami.html)

chellas88 02.11.2017 12:00

Проблема с повторяющимися дивами
 
Всем привет. Помогите решить такую проблемку:
Есть корзина покупок. Если в корзине только один товар, кнопки + и - товар работают, если 2 товара - работают только на первом товаре.

echo '<tr><td><img id="product_img_mini" src="/src/img/products/'.$item['img_1'].'"></td><td>'.$item['name_'.$_SESSION[USER_LANG].''].'</td><td width="120px"><div id="minus" tovar="'.$id.'">-</div><input id="incart" disabled="disabled" type="text" name="'.$id.'" value="'.$_SESSION['cart'][$id].'"><div id="plus" tovar="'.$id.'">+</div></td><td width="100px">'.$item['price'] * $_SESSION['cart'][$id].' грн.</td><td><a href="?page=cart&operation=delete&id='.$id.'"><img src="/src/img/del.png" alt="'.$delete.'" title="'.$delete.'"></a></td></tr>';


$(function(){
	$('#plus').click(function(){
		var product = $(this).attr('tovar');
		var count = $('#incart').attr('value');
		var newcount = +count + +1;
		$('#incart').val(newcount);
		
	});
	
	
	$('#minus').click(function(){
		if ($('#incart').attr('value') > 1) {
		var product = $(this).attr('tovar');
		var count = $('#incart').attr('value');
		var newcount = +count - +1;
		$('#incart').val(newcount);
		}
	});
});


ссылка на изображение https://ibb.co/kLi43G

Nexus 02.11.2017 12:06

Значение id должно быть уникальным в пределах страницы.
Замените атрибут "id" на "class" и в скрипте работайте только с элементами текущей строки, а не со всеми элементами страницы, которые удовлетворяют селектору.

chellas88 02.11.2017 12:12

Цитата:

Сообщение от Nexus (Сообщение 468897)
Значение id должно быть уникальным в пределах страницы.
Замените атрибут "id" на "class" и в скрипте работайте только с элементами текущей строки, а не со всеми элементами страницы, которые удовлетворяют селектору.

Но каждая строка выводится циклом. Подскажите пример кода плиз

Nexus 02.11.2017 12:13

Цитата:

Сообщение от chellas88
Подскажите пример кода плиз

echo '<tr><td><img class="product_img_mini" src="/src/img/products/'.$item['img_1'].'"></td><td>'.$item['name_'.$_SESSION[USER_LANG].''].'</td><td width="120px"><div class="minus" tovar="'.$id.'">-</div><input class="incart" disabled="disabled" type="text" name="'.$id.'" value="'.$_SESSION['cart'][$id].'"><div class="plus" tovar="'.$id.'">+</div></td><td width="100px">'.$item['price'] * $_SESSION['cart'][$id].' грн.</td><td><a href="?page=cart&operation=delete&class='.$id.'"><img src="/src/img/del.png" alt="'.$delete.'" title="'.$delete.'"></a></td></tr>';

chellas88 02.11.2017 12:16

Цитата:

Сообщение от Nexus (Сообщение 468900)
echo '<tr><td><img class="product_img_mini" src="/src/img/products/'.$item['img_1'].'"></td><td>'.$item['name_'.$_SESSION[USER_LANG].''].'</td><td width="120px"><div class="minus" tovar="'.$id.'">-</div><input class="incart" disabled="disabled" type="text" name="'.$id.'" value="'.$_SESSION['cart'][$id].'"><div class="plus" tovar="'.$id.'">+</div></td><td width="100px">'.$item['price'] * $_SESSION['cart'][$id].' грн.</td><td><a href="?page=cart&operation=delete&class='.$id.'"><img src="/src/img/del.png" alt="'.$delete.'" title="'.$delete.'"></a></td></tr>';

а в скрипте как обрабатывать каждую строку?

Nexus 02.11.2017 12:28

chellas88, попробуй так:
$(function(){
	$('.plus,.minus').click(function(){
		var $t=$(this),
			$i=$t.parents('tr').find('.incart');

		$i.val(+($t.text()+'1')+parseInt($i.val()||1));
	});
});


Часовой пояс GMT +3, время: 15:17.