Рендер результата работы цикла

199
02 ноября 2017, 08:30

Доброго времени суток, в input пользователь вводит вопросы, по событие keyup каждый раз запускается функция которая сравнивает совпадения в вводе пользователя и в объекте (ранее заготовленном). Объект перебирается циклом for(key in data) и если data[key].answer == вводу пользователя(хотя бы частично) то я вывожу поле из объекта в HTML.

Проблема в том что т.к. цикл запускается много раз, много раз находятся совпадения (одни и те же) и при рендере получается, что я вывожу вместо одного совпавшего ответа (например) Привет, штук 30... Как правильно отследить этот момент и рендерить только 1 совпавшее поле объекта в HTML? рендерится всё сюда

$('div.Answers').append('<p>' + data[key].answer + '</p>')

Заранее спасибо!

Answer 1
if ($('div.Answers p.' + key).length == 0) {
  $('div.Answers').append('<p class="' + key + '"></p>');
}
$('div.Answers p.' + key).text(data[key].answer);

а лучше

if ($('div.Answers p.[data-key="' + key + '"]').length == 0) {
  $('div.Answers').append('<p data-key="' + key + '"></p>');
}
$('div.Answers p.[data-key="' + key + '"]').text(data[key].answer);
READ ALSO
Не работает ScriptProcessorNode с OfflineContext

Не работает ScriptProcessorNode с OfflineContext

Не работает ScriptProcessorNode с OfflineContext

301
Добавление класса по клику + проверка на наличие класса и добавление класса другому div

Добавление класса по клику + проверка на наличие класса и добавление класса другому div

У меня немного запутанное задание: нужно чтобы при клике на inputinput-checkbox другому div

288
Как правильно доработать скрипт?

Как правильно доработать скрипт?

Добрый день! Помогите, пожалуйста, доработать скриптБлок

317
Почему возвращается объект?

Почему возвращается объект?

Помогите пожалуйста понять что детально происходит при таком вызове:

309