Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Поочередность выполнения действий. (https://javascript.ru/forum/css-html/73351-poocherednost-vypolneniya-dejjstvijj.html)

Subteras 08.04.2018 22:05

Поочередность выполнения действий.
 
Всем привет.
Вот сделал такой вывод, но возникла проблема. Как сделать отработку Ajax запроса после каждой отработки вывода массива each ( id1 -> quntity1 -> Ajax, id2 -> quntity2 -> Ajax, .... и т.д.)?
window.onload = function(){
	$(document).ready(function(){
	$('.clear_basket').on('click', function(){
		var id = "";
		var quntity = "";
		$('.num_id').each(function(){
			id = $(this).val();
			quntity = $(this).closest('div.b_list').find('.b_quntity').val();
				$.ajax({
					url: "http://localhost/MyShop/php/product-basket-clear.php",
					type:"POST",
					data:{id:id, quntity:quntity},
					success: function(result){
						console.log(result);
				}
			});
				console.log(id);
				console.log(quntity);
			});	
			
		});	
	});
};

j0hnik 09.04.2018 00:39

window.onload = function(){
	$(document).ready(function(){
	$('.clear_basket').on('click', function(){
		var id = "";
		var quntity = "";
		var i = 0;
		var num = $('.num_id');
		(function func(){
			var id = num.eq(i).val();
			quntity = num.eq(i).closest('div.b_list').find('.b_quntity').val();
				$.ajax({
					url: "http://localhost/MyShop/php/product-basket-clear.php",
					type:"POST",
					data:{id:id, quntity:quntity},
					success: function(result){
						console.log(result);
						if(num.length>++i) func();
				}
			});
				console.log(id);
				console.log(quntity);
			})();
			
		});	
	});
};

Subteras 09.04.2018 00:58

Алгоритм отрабатывает правильно! Но перестал находить значение
quntity = $(this).closest('div.b_list').find('.b_quntity').val();
пишет "undefined".

j0hnik 09.04.2018 01:02

Subteras,
Исправил, проверьте

Subteras 09.04.2018 01:06

j0hnik,
Это просто отлично!!! Все работает, а я уж было подумал, что зашел в тупик!

Nexus 09.04.2018 10:42

Не обязательно оборачивать код в
$(document).ready(function(){});
Т.к. вы его запускаете после полной загрузки браузером страницы (load event), событие "DOMContentLoaded" в этот момент уже наступит.

Subteras 10.04.2018 01:28

Цитата:

Сообщение от Nexus (Сообщение 482764)
Не обязательно оборачивать код в
$(document).ready(function(){});
Т.к. вы его запускаете после полной загрузки браузером страницы (load event), событие "DOMContentLoaded" в этот момент уже наступит.

Я window.onload убрал из кода. Он мне там не нужен.

Вопрос еще возник. Как взаимодействовать с input-ом , созданным динамически?
Вот код
$('input').on('keyup', function(){
			var id = $(this).closest('div.b_list').find('.b_id').val();
			var quntity = $(this).closest('div.b_list').find('.b_quntity').val();
			var price = $(this).closest('div.b_list').find('.b_price').val();
			
			var new_price = quntity * price;
			console.log(new_price);
			console.log(id);
		});

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

Malleys 10.04.2018 01:53

возможно так

$(document).on("keyup", function(event) {
	var jquery = $(event.target).closest("div.b_list");
	if(jquery.length === 0) return;
	
	var id       = jquery.find('.b_id')     .val();
	var quantity = jquery.find('.b_quntity').val();
	var price    = jquery.find('.b_price')  .val();

	var newPrice = quantity * price;
	console.log(newPrice);
	console.log(id);
});

Subteras 10.04.2018 02:00

Да, то что нужно! Спасибо!!! Разберу сегодня этот пример))).
А не подскажите еще как мне newPrice записать в такой же динамически создаваемый input ".b_price". Что бы потом отравить эти данные в mysql. Смысл такой, что меняя количество должна меняться сумма в input. Со статическими у меня проблем нет, а в jQuery я только-только новичок.

Nexus 10.04.2018 07:43

Цитата:

Сообщение от Subteras
А не подскажите еще как мне newPrice записать в такой же динамически создаваемый input ".b_price".

У вас в строке 7 идет чтение значения из этого инпута, записать значение можно так:
jquery.find('.b_price').val(newPrice);


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