@ellenar

Почему не работает .on('click') на динамическом элементе?

Нужно сделать автопоиск по элементам из JSON-файла - делаю ajax request, в форму добавляю список .search-autocomplete, сами варианты - li.search-request. При введении в input символов, подходящие варианты появляются, но к ним не привязывается событие .on('click'), чтобы выбранный вариант подставился в input.
var searchTopInput = $('#search');

$(document).on('click', ' li.search-request', function() {
    var clickText = $(this).text();
    searchTopInput.val(clickText).focus();
    return false;
  });


В чем ошибка?
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ответы на вопрос 2
В приведенном коде мало информации. После ajax-запроса, я так понимаю, DOM модифицируется. Повторная привязка ( unbind.('click').bind('click') обработчиков событий после этого обновления делается?
Ответ написан
ThunderCat
@ThunderCat Куратор тега JavaScript
{PHP, MySql, HTML, JS, CSS} developer
ellena, для начала - дебаг.
let searchTopInput = $('#search');

$(document).on('click', 'li.search-request', function() {
    console.log("input:",searchTopInput);
    console.log("clicked:",$(this));
    let clickText = $(this).text();
    console.log("text:",clickText);
    searchTopInput.val(clickText).focus();
    return false;
  });

в приведенном коде особо ошибиться негде, скорее всего что-то из данных/элементов отсутствует. Проверьте правильность написания классов и проверьте консоль на ошибки.

UPD:
...(пробел) был я его удалила, но событие все равно не происходит, точнее функция по его наступлению не выполняется
Если функция в отдельном JS файле нужно очистить кеш и сделать хард релоад, надеюсь вы в курсе?..
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы