javascript - Select2 自定义匹配器,但保留 stripDiacritics

标签 javascript jquery-select2

我知道在以前的 select2 版本中,stripDiacritics 被导出,所以它可以在默认匹配器之外访问。在当前版本 4.0.1 中,似乎不可能编写自定义匹配器并使用 select2 的 stripDiacritics,因为未在 $.fn.select2.defaults

中导出

为我编写自定义匹配器提取原始 stripDiacritics 的最佳方法是什么?

我正在尝试编写一个匹配选项文本和数据属性的匹配器。我试图避免修补 select2 的源代码,我想如果我遵循这条路,那将是一场噩梦。

更新

我已经突出显示了实际问题,并按照评论中的建议发布了有关我正在使用的代码的更多详细信息:

我不是要别人为我编写新的匹配器(基于 $.fn.select2.defaults.defaults.matcher),我只是要求最好的方法来提取原始的 stripDiacritics这是私有(private)的,所以我可以使用它。

我可以简单地将函数(及其依赖项:DIACRITICS 对象)复制到我的代码中,但这是我试图避免的漏洞。

最佳答案

由于 stripDiacriticss 是私有(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/

相关文章:

javascript - 如果脚本确实很短,那么使用内联 JavaScript 是否优于外部包含?

javascript - 如何在方法函数中将参数传递给 vue.js 路由器?

javascript - 如何使用 Chrome 扩展程序从页面中剪切元素

javascript - 从 div 中拉取时变量为 null

javascript - jquery Select2 防止在 ajax 响应中选择

jquery - Select2 不加载远程数据

jquery - tabfocus 在选择框上

javascript - 过滤带有图像扩展名的字符串的对象值数组

jquery-select2 - 在 optgroup 中选择 2 optgroup

php - jquery - 如何使用通过 AJAX 从 MySQL 和 PHP 检索的数据将图像添加到 Select2 下拉列表中?