Поочередность выполнения действий.
Всем привет.
Вот сделал такой вывод, но возникла проблема. Как сделать отработку 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); }); }); }); }; |
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); })(); }); }); }; |
Алгоритм отрабатывает правильно! Но перестал находить значение
quntity = $(this).closest('div.b_list').find('.b_quntity').val();пишет "undefined". |
Subteras,
Исправил, проверьте |
j0hnik,
Это просто отлично!!! Все работает, а я уж было подумал, что зашел в тупик! |
Не обязательно оборачивать код в
$(document).ready(function(){});Т.к. вы его запускаете после полной загрузки браузером страницы (load event), событие "DOMContentLoaded" в этот момент уже наступит. |
Цитата:
Вопрос еще возник. Как взаимодействовать с 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); }); Но он работает только с элементами которые есть на странице, а я динамически добавляю еще, и код перестает работать вообще, даже на предыдущих(на которых работал до этого. |
возможно так
$(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); }); |
Да, то что нужно! Спасибо!!! Разберу сегодня этот пример))).
А не подскажите еще как мне newPrice записать в такой же динамически создаваемый input ".b_price". Что бы потом отравить эти данные в mysql. Смысл такой, что меняя количество должна меняться сумма в input. Со статическими у меня проблем нет, а в jQuery я только-только новичок. |
Цитата:
jquery.find('.b_price').val(newPrice); |
Subteras,
в каком ближайшем постоянном блоке находятся div.b_list? |
Нет, я так пробовал. Не проходит этот код. Нужно чтобы по функции keyup работало (я меняю значение quntity, автоматом перезаписывается значение input). Но значение не меняется...
|
рони,
|
Subteras,
возможно так ... $(function() { $("#basket").on("input", "div.b_list", function(event) { var jquery = $(this); 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||0; // ??? }); }); Цитата:
|
Цитата:
$(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 new_price = quantity * price; $(event.target).closest('div.b_list').find('.b_total').val(new_price); console.log(new_price); }); |
Subteras,
а так? $(function() { $("#basket").on("input", "div.b_list", function(event) { var jquery = $(this); 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||0; jquery.find('.b_total').val(new_price);}); }); |
Цитата:
переменную в var я конечно поменял. Но дальше разбираться не стал. Пока по предыдущему коду все работает... |
Часовой пояс GMT +3, время: 10:27. |