我在页面上有多个元素,这些元素触发将select2加载到该元素。我试图有条件地检查该元素是否具有某个类,如果可以,请添加该tag
选项;否则不要。我以为这样的事情会起作用,但事实并非如此:
$('.element_to_add_select_two_on').select2({
tags:function(element) {
return (element.className === 'classname_i_am_targeting');
},
});
我在这里想念什么?我正在接受以下自助服务,以使其达到目标并加载:
$('.element_to_add_select_two_on').each((index,element) => {
let showTags = false;
if ($(element).attr('class').split(' ').includes('classname_i_am_targeting')) {
showTags = true;
}
$(element).select2({
tags:showTags,
});
});
您的第一次尝试有一些问题。首先,tags
当您需要的是函数的结果时,就将tags
其定义为函数,因为需要将其定义为布尔值true或false。另一个是在.select2()
通话中,您无法以$('.element_to_add_select_two_on')
您认为的方式访问通话元素。这不是您正在监听的事件,它是一个函数调用,要求通过其配置传递对象。
您已经说明了第二种方法有效,但是可以使用jQueryhasClass()
函数进行简化:
$('.element_to_add_select_two_on').each((index, element) => {
$(element).select2({
tags: $(element).hasClass('classname_i_am_targeting'),
});
});
但是,有一种更简单的方法来执行所有这些操作,并且它更加灵活,并且已经通过data- *属性的方式内置到select2中(请注意,您需要jQuery> 1.x)。您可以简单地将其添加data-tags="true"
到select
要启用标签的任何元素中。这些将覆盖初始化select2时使用的所有配置选项以及所有默认设置:
<select data-tags="true">
...
</select>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句