无法使用此属性标题在多选中设置占位符

Can;t set placeholder in multiselect using this attr title

在我的网站上,我使用 jquery multiselect 将 select 显示为漂亮的下拉菜单。出于某种原因,我无法使用属性/或添加到 select 的数据来设置 multiselect 占位符。静态文本有效,但我需要传递动态占位符名称。 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 调用 multiselect:

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

页面上有多个具有相同 class 和不同 titles/data-translation 字段的 select。小部件本身正在运行,但占位符为空:

我也试过通过 $(this).data('translation') 访问 - 效果相同 - 没有占位符。只有一件事对我有用,但它有问题 - 调用时不使用它 - $("#someId").data('translation') - 但它根本不是动态的。

它不起作用有什么充分的理由吗? 感谢您的帮助!

问题是因为 this 指的是设置对象中的外部范围,而不是当前的 .filter_select 元素。要解决此问题,您可以使用 each() 显式循环遍历元素并从中读取 title 属性:

$('.filter_select').each(function() {
  $(this).multiselect({
    texts: {
     placeholder: this.title, // or $(this).prop('title'),
    },
  });
});