jQuery用于contains和toLowerCase()

时间:2012-01-09 21:57:45

标签: jquery

我正在尝试使用jQuery contain将输入中给出的字符串与div的内容进行比较。

问题是,我希望能够检查是否包含字符串,无论大/小写。

这是我的功能:

$(document).ready(function() {
    drawDimensions('dContent');
    $('#dSuggest').keyup(function() {
        var dInput = this.value;
        $(".dDimension:contains('" + dInput + "')").css("display","block");
    });
});

因此,如果其中一个.dDimension div包含'Date'而用户按下'd'键,我想显示该项。

有可能吗?

4 个答案:

答案 0 :(得分:22)

您可以使用.filter [docs]

var dInput = this.value.toLowerCase();

$(".dDimension").filter(function() {
    return $(this).text().toLowerCase().indexOf(dInput) > -1;
}).css("display","block");

答案 1 :(得分:1)

您可以通过扩展jQuery来编写自己的选择器。试试这个

$.extend($.expr[':'], {
  'containsi': function(elem, i, match, array)
  {
    return (elem.textContent || elem.innerText || '').toLowerCase()
    .indexOf((match[3] || "").toLowerCase()) >= 0;
  }
});

使用$(".dDimension:containsi('" + dInput + "')").css("display","block");

答案 2 :(得分:1)

看看this example,他用一个不区分大小写的包含选择器扩展jQuery选择器,他调用containsi,如下所示:

$.extend($.expr[':'], {
   'containsi': function (elem, i, match, array) {
       return (elem.textContent || elem.innerText || '').toLowerCase().indexOf((match[3] || '').toLowerCase()) >= 0;
   }
});

答案 3 :(得分:0)

the jQuery documentation for contains中的最后一条评论提供了适合您的“icontains”实现。

$.expr[':'].icontains = function(obj, index, meta, stack){
    return (obj.textContent || obj.innerText || jQuery(obj).text() || '').toLowerCase().indexOf(meta[3].toLowerCase()) >= 0;
};

// Example usage.
$("div:icontains('John')").css("text-decoration", "underline");