我可以从我的自定义匹配器中访问原始的 select2 匹配器吗?
Posted
技术标签:
【中文标题】我可以从我的自定义匹配器中访问原始的 select2 匹配器吗?【英文标题】:Can I access the original select2 matcher from within my custom matcher? 【发布时间】:2018-03-17 08:16:16 【问题描述】:我正在使用select2 JQuery 插件。下拉列表中的第一个选项标记为“所有组织”。当用户搜索某个选项时,我不想在搜索结果中包含第一个“所有组织”选项。
有没有简单的方法可以做到这一点?
如果我看到该选项,该策略似乎是使用自定义匹配器并返回 null。但是,然后我需要编写匹配器的其余部分,这基本上与默认行为相同。我可以从我的自定义匹配器中以某种方式调用原始匹配器吗?
$("select").select2(
matcher: custMatcher
);
function custMatcher(params, data)
if (params.term === "All Organizations")
return null;
// else do regular searching
// would like to call the original matcher here.
jsfiddle
【问题讨论】:
【参考方案1】:我们开始;)
var defaultMatcher = $.fn.select2.defaults.defaults.matcher;
function customMatcher(params, data)
if (params.term && data.id == "ALL")
return null;
return defaultMatcher(params, data);
$("#s").select2(
matcher: customMatcher,
);
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js"></script>
<select id="s">
<option value="ALL">All Organizations</option>
<option value="1">Org 1</option>
</select>
【讨论】:
谢谢!我想我真的希望有人会说“实际上您不需要客户匹配器,只需在设置时打开此标志即可。” 我认为最好的解决方案是using placeholder,但您要求使用默认匹配器 是的,我看到了,但我不认为我想要占位符。我希望它是一个选项,而不是一个可搜索的选项。 好的。我明白了;)以上是关于我可以从我的自定义匹配器中访问原始的 select2 匹配器吗?的主要内容,如果未能解决你的问题,请参考以下文章
从 Kentico 10 中的自定义表重复器中过滤重复的列值
如何从我的自定义制作 DASH 之类的视频播放器中制作 HLS 视频播放器?
尝试从我的自定义 iOS 应用与 Google+ 共享时出现 404 错误