Невозможно установить заполнитель для множественного выбора с использованием этого заголовка attr - PullRequest
1 голос
/ 04 августа 2020

на моем веб-сайте я использовал jquery множественный выбор, чтобы отображать выбор в виде красивых раскрывающихся списков. По какой-то причине я не могу установить заполнитель множественного выбора с использованием атрибутов / данных, добавленных для выбора. Текст Stati c работает, но мне нужно передать имена заполнителей Dynami c. Html выглядит так:

<select multiple="multiple" class="filter_select" id="front_type_filter" data-translation="Typ frontu" title="test123" name="front_type">
<option value="1">Płyta laminowana</option>
<option value="2">Płyta MDF foliowana</option>
<option value="3">Płyta MDF lakier</option>
<option value="4">Płyta MDF akryl</option>
<option value="5">Płyta fornirowana</option>
</select>

И js вызывает множественный выбор:

 $('.filter_select').multiselect({
    texts: {
            placeholder: $(this).attr('title'),
    },
});

На странице есть несколько выборок с одним и тем же классом с разными заголовками / полями преобразования данных. Сам виджет работает, но с пустым заполнителем:

enter image description here

введите описание изображения здесь

Я пробовал также получить доступ через $ (this) .data ('translation') - с тем же эффектом - без заполнителя. У меня сработало только одно, но это было проблемой: c - вызов без использования этого - $ ("# someId"). Data ('translation') - но это вообще не динамический c.

Есть ли веская причина, по которой он не работает? Спасибо за любую помощь!

1 Ответ

1 голос
/ 04 августа 2020

Проблема в том, что this относится к внешней области в объекте настроек, а не к текущему элементу .filter_select. Чтобы исправить это, вы можете использовать each() для явного l oop через элементы и прочитать из них атрибут title:

$('.filter_select').each(function() {
  $(this).multiselect({
    texts: {
     placeholder: this.title, // or $(this).prop('title'),
    },
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...