Выбор элемента из списка
Добрый день. Есть следующий js:
jQuery('body').on('click', ' .quo span', function(){ col = jQuery('.basketForm .quo .form-control').val(); id = jQuery('.basketForm .quo .form-control').attr('data-id'); jQuery.ajax({ url : '/wp-admin/admin-ajax.php', type : 'POST', cache: false, data: ({ action : 'change_product', col : col, id : id, }), success: function(data){ jQuery('.order-form').html(data); } }); }); И часть таблички с двумя пунктами: // первый <td class="quo" data-label="Количество:" data-value="1" data-id="226"> <span class="down">-</span> <input maxlength="15" type="text" onkeyup="buttonOff()" class="form-control" data-id="226" name="update_226" value="1"> <span class="up">+</span> </td> // второй <td class="quo" data-label="Количество:" data-value="1" data-id="236"> <span class="down">-</span> <input maxlength="15" type="text" onkeyup="buttonOff()" class="form-control" data-id="226" name="update_226" value="1"> <span class="up">+</span> </td> Как правильно получить переменные id и col того пункта, значения которого меняю? Сейчас, берет данные только из первого .quo .form-control, даже если работаю со вторым. Понимаю, что ответ на поверхности, но как правильно? Спасибо. |
var $con=jQuery(this).parents('.quo').find('.form-control'), col=$con.val(), id=$con.attr('data-id'); |
Спасибо большое. Работает на ура...
|
Янковиц,
думайте сами - элементы span увеличивают/уменьшают количество, вернее "по задумке так", но обработчик же .on('click', ' .quo span', function() этого вообще не делает. К тому же почему обработчик делегирован BODY, эти элементы что динамически добавляются на страницу? jQuery('.basketForm .quo .form-control') - это коллекция элементов, а обращение к свойству элемента и вернет для первого. А должно быть не так, но сначала бы разобраться с бардаком, что выше описан. |
Nexus,
не правильно. |
Цитата:
|
А где тогда изменение значения поля? И что при каждом изменении поля запрос на сервер?
|
laimas, если автор задает такие вопросы на форуме, то этот код он явно не сам писал.
Если он его не сам писал, то переписать весь код, чтобы было правильно он не сможет. Если в этом банальном алгоритме допущены ошибки, то наверняка в остальном коде можно найти и что поинтереснее. С тобою написанным согласен, но сказать, что мой код некорректен не могу, т.к. он решает проблему, но не устраняет глупостей уже написанного кода. Upd. я бы сделал примерно так, не тестил. jQuery('body').on('click','.quo span',function(){ var $t=jQuery(this), $con=$t.parents('.quo').find('.form-control'); col=$con.val(); id=$con.attr('data-id'); if($t.hasClass('up')) col++; else col--; $con.val(col); var form_control=$con.get(0); if(!!form_control.__timer) clearTimeout(form_control.__timer); form_control.__timer=setTimeout(function(){ form_control.__timer=false; jQuery.ajax({ url:'/wp-admin/admin-ajax.php', type:'POST', cache:false, data:({ action:'change_product', col:col, id:id, }), success:function(data){ jQuery('.order-form').html(data); } }); },250); }); |
На счет "глупостей написанного", не могу согласиться, ведь, вы не до конца понимаете логику работы. Уже написанный код. И, да при каждом изменении, запрос на сервер. Это ведь корзинка заказа.
|
Цитата:
|
Часовой пояс GMT +3, время: 10:41. |