jquery - 使 jquery :Contains accent insensitive

标签 jquery contains case-insensitive accent-insensitive

我有这个不区分大小写的自定义选择器:

jQuery.expr[':'].Contains = function(a,i,m) {
    var text = jQuery(a).text().toUpperCase();
    var words = m[3].split(/\s+/);
    for(var i = 0; i < words.length; i++) {
        if (-1 == text.indexOf(words[i].toUpperCase())) {
          return false;
        }
    }
    return true;
};

它工作得很好,但它会因为重音而变得困惑。我的问题很简单,如何使这个选择器不区分大小写和重音

我正在考虑使用带有正则表达式的字符映射表,但我似乎无法使其正常运行。

感谢您的帮助。

最佳答案

我在 Github 上找到了这个,它对我来说非常有用: https://gist.github.com/oziks/3664787

jQuery.expr[':'].contains = function(a, i, m) {
    var rExps=[
        {re: /[\xC0-\xC6]/g, ch: "A"},
        {re: /[\xE0-\xE6]/g, ch: "a"},
        {re: /[\xC8-\xCB]/g, ch: "E"},
        {re: /[\xE8-\xEB]/g, ch: "e"},
        {re: /[\xCC-\xCF]/g, ch: "I"},
        {re: /[\xEC-\xEF]/g, ch: "i"},
        {re: /[\xD2-\xD6]/g, ch: "O"},
        {re: /[\xF2-\xF6]/g, ch: "o"},
        {re: /[\xD9-\xDC]/g, ch: "U"},
        {re: /[\xF9-\xFC]/g, ch: "u"},
        {re: /[\xC7-\xE7]/g, ch: "c"},
        {re: /[\xD1]/g, ch: "N"},
        {re: /[\xF1]/g, ch: "n"}
    ];

    var element = $(a).text();
    var search = m[3];

    $.each(rExps, function() {
        element = element.replace(this.re, this.ch);
        search = search.replace(this.re, this.ch);
    });

    return element.toUpperCase()
    .indexOf(search.toUpperCase()) >= 0;
};

关于jquery - 使 jquery :Contains accent insensitive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14628989/

相关文章:

c# - 不区分大小写的 StringComparisons 之间的区别?

xml - VBA 上的 xpath 不区分大小写匹配吗?

javascript - 保留DataTable中某列的CSS以供打印

javascript - jQuery:是 element.click(func) 还是 element.attr ('onclick' ,'func()' ) 更有效?

javascript - jquery 查找文本并改变大小

SQL Server 忽略 where 表达式中的大小写

javascript - JQuery 验证插件不适用于简单按钮

javascript - XML ajax/javascript/jquery

list - LINQ 查询从 csv 文件的列表中查找元素

java - 检查 List<String> 是否包含唯一字符串的最快方法