Зацикливается событие нажатии кнопки

175
24 февраля 2018, 23:19

Есть страница, куда с помощью ajax запроса вставляются данные. Вот кусочек кода:

foreach ($sql_object as $ps){ $i++; ?>
<div id="<?= $i?>" class="getApiId">...</div>}

Сначала вывожу список циклом. После этого, по нажатию на блок, беру у блока data-api

$('.getApiId').on('click', function() { //Показать поставщика
    var url = '...';
    var api_id = $(this).attr('data-api');
    var data = {...};
    async_query(url,data);
});
function async_query(url,data) {
    $.ajax({
        url:url,
        type:'POST',
        data:data,
        dataType: 'html',
        success: function(html){
            if(this_show != 0)
            {
                $('...').html(html).show();
            }
        }
    });
}

Проблема в том что код зацикливается, т.е. когда выбираю элемент из списка первый раз, то все норм, а когда второй, третий раз... Получаю кучу событий нажатий на кнопку, которые увеличиваются в два раза каждый раз. Подскажите, пожалуйста, в чем проблема?

Answer 1

Код

$('.getApiId').on('click', ...

выполняется многократно.

Замените его на

$(document).on("click", ".getApiId", function () { ...

и вызывайте только один раз в $(document).ready(function(){ ... });.

READ ALSO
Проблема с датой в JS

Проблема с датой в JS

ЗдравствуйтеПытаюсь сделать так чтобы, при отправке формы в БД записывалась дата отправки в формате "ДД

206
Сайдбар SublimeText3

Сайдбар SublimeText3

Здравствуйте, возник вопрос: При включении сайдбара в ST3 он сворачивается после перехода в другое окно или же просто при написании кода через...

108
Отправка сообщения в чат через textarea, jQuer/js

Отправка сообщения в чат через textarea, jQuer/js

Пишу расширение для ChromeНа таргетном сайте есть чат, в который нужно периодически отправлять сообщение

186
Не изменяется атрибут value

Не изменяется атрибут value

Если добавить бургер в корзину, перейти к оформлению заказа (справа вверху) и изменить, скажем, поле "Дом", то в атрибуте value ничего не поменяетсяПочему...

149