Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Прерывание цикла на нужной итерации (https://javascript.ru/forum/jquery/47571-preryvanie-cikla-na-nuzhnojj-iteracii.html)

bikerlex 29.05.2014 04:37

Прерывание цикла на нужной итерации
 
Есть такая фигня:

$('#pickup').change(function() {
		if ($(this).prop('checked')) {
			$('.trade-block').each(function() {
				price = parseInt($(this).attr('data-price'))*0.9;
				id = $(this).attr('data-id');
				$(this).find('.price').text(Math.floor(price));
				$('li[data-id='+id+']').attr('data-price',Math.floor(price));
				val = $('li[data-id='+id+'] input').val();
				recountCartValues($('li[data-id='+id+'] input'),val);
				$('#user_addr').parent().hide();
			});
		} else {
			$('.trade-block').each(function() {
				price = $(this).attr('data-price');
				id = $(this).attr('data-id');
				$(this).find('.price').text(price);
				$('li[data-id='+id+']').attr('data-price',price);
				val = $('li[data-id='+id+'] input').val();
				recountCartValues($('li[data-id='+id+'] input'),val);
				$('#user_addr').parent().show();
			});
		}
	});


Ну т.е. есть список товаров с их ценами и если ставим галку цены меняются. В блоке trade-block завел новый атрибут (или как он правильно называется) discounts (Без скидки). Дак вот, если он = 1, то цикл на этой итерации должен прерываться до умножения на 0.9 и препрыгивать на следующую итерацию.
Запилил перед этим местом такую штуку:
if($(this).prop('discounts').text() == 1) return true;

Но цикл полностью прерывается, скидка не срабатывает для всех товаров, хотя должна бы только для одного.

WorM32 29.05.2014 08:44

1. Лучше назвать атрибут "data-discounts" и обращаться к нему через $(this).data('discounts');

2.
$('.trade-block').each(function () {
    if (!$(this).data('discounts')) {
        price = parseInt($(this).attr('data-price')) * 0.9;
        id = $(this).attr('data-id');
        $(this).find('.price').text(Math.floor(price));
        $('li[data-id=' + id + ']').attr('data-price', Math.floor(price));
        val = $('li[data-id=' + id + '] input').val();
        recountCartValues($('li[data-id=' + id + '] input'), val);
        $('#user_addr').parent().hide();
    }
});

bikerlex 30.05.2014 10:06

Благодарю за помощь!


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