我正在使用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.
}
答案 0 :(得分:3)
我们走了;)
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>
&#13;