Доступ к $ (this) в функции автозаполнения jQuery

Я использую jQuery виджет автозаполнения и пытаюсь использовать его для нескольких элементов на одной странице и динамически извлекать их индивидуальные атрибуты, вместо того, чтобы делать отдельный уникальный вызов для каждого поля поиска. Каждое окно поиска имеет класс autocomplete-search и некоторые атрибуты data, характерные для его варианта использования.

Например:

<input type = "text" name = "brand" id = "brand" class = "autocomplete-search" data-search-url = "/api/v1/search">
<input type = "text" name = "product" id = "product" class = "autocomplete-search" data-search-url = "/api/v1/search">

$('.autocomplete-search').autocomplete({
  source: $(this).data("search-url"),
});

Однако это не работает с TypeError: this.source is not a function. (In 'this.source( { term: value }, this._response() )', 'this.source' is null). Я понимаю, что этот вопрос похож на Доступ к элементу $ (this) DOM из вызова Ajax виджета автозаполнения jQuery, но принятый ответ здесь не работает. this.element также отвечает с той же ошибкой.

Я не могу найти ответ на этот вопрос после прочтения документов автозаполнения. Любая помощь будет оценена по достоинству.

Что должен представлять this в вашем случае?

Zenoo 02.05.2018 14:25

@Zenoo элемент, на котором был вызван autocomplete; так что конкретное поле поиска. Я только что обновил вопрос, включив разметку двух примеров входных данных.

Tony Beninate 02.05.2018 14:27
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
0
2
78
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы вызываете виджет autocomplete для нескольких элементов.

Насколько мне известно, вы не можете указать виджету выбирать динамический источник для каждого элемента.

Другой способ - перебрать ваши элементы и вызвать autocomplete внутри этого цикла с помощью функции jQuery .each():

$('.autocomplete-search').each(function(){
  $(this).autocomplete({
    source: $(this).data("search-url")
  });
});

В этом есть смысл. Дай мне попробовать.

Tony Beninate 02.05.2018 14:33

Крутой мужик. Кажется, это сработало! Ценить это.

Tony Beninate 02.05.2018 14:35

Нет проблем, рад помочь.

Zenoo 02.05.2018 14:36

Другие вопросы по теме