我知道在以前的 select2 版本中,stripDiacritics 被导出,所以它可以在默认匹配器之外访问。在当前版本 4.0.1 中,似乎不可能编写自定义匹配器并使用 select2 的 stripDiacritics,因为未在 $.fn.select2.defaults
为我编写自定义匹配器提取原始 stripDiacritics
的最佳方法是什么?
我正在尝试编写一个匹配选项文本和数据属性的匹配器。我试图避免修补 select2 的源代码,我想如果我遵循这条路,那将是一场噩梦。
更新
我已经突出显示了实际问题,并按照评论中的建议发布了有关我正在使用的代码的更多详细信息:
我不是要别人为我编写新的匹配器(基于 $.fn.select2.defaults.defaults.matcher
),我只是要求最好的方法来提取原始的 stripDiacritics
这是私有(private)的,所以我可以使用它。
我可以简单地将函数(及其依赖项:DIACRITICS
对象)复制到我的代码中,但这是我试图避免的漏洞。
最佳答案
由于 stripDiacritics
s 是私有(private)方法,因此您无能为力(除了解析源代码)。
但是,如果您乐于从 select2 代码库中仅复制 stripDiacritics
方法并依靠 select2 提供 DIACRITICS
依赖项,您始终可以只需要'select2/diacritics'
模块:
$.fn.select2.amd.require(['select2/diacritics'], function (DIACRITICS) {
// stripDiacritics code copied from select2
function stripDiacritics (text) {
// Used 'uni range + named function' from http://jsperf.com/diacritics/18
function match(a) {
return DIACRITICS[a] || a;
}
return text.replace(/[^\u0000-\u007E]/g, match);
}
$(".awesome").select2({
// declare your matcher code here with access to stripDiacritics
})
});
关于javascript - Select2 自定义匹配器,但保留 stripDiacritics,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35557486/