0

如何过滤不区分大小写的div标签?

我正在使用以下代码。

以下代码可以正常工作,但过滤器区分大小写!我需要过滤而不区分大小写。我该怎么做?我不知道

   $('#txtSearchInShip').keyup(function () {
        var searchText = $(this).val();
         if (searchText.length <= 0) {
             $('div .thumbnail').fadeIn("slow");
        }
        else if (searchText.length > 0) {
             $("div .thumbnail .caption p a:contains(" + searchText + ")").parent().parent().parent().parent().show();
             $("div .thumbnail .caption p a:not(:contains(" + searchText + "))").parent().parent().parent().parent().hide();
        }
    });
4

2 回答 2

0

您可以在 JS 文件中编写此代码(对于 jQuery >= 1.8):

$.expr[":"].contains = $.expr.createPseudo(function(arg) {
    return function( elem ) {
        return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
    };
});

然后,像往常一样调用您的方法:

$("div:contains('John')")

来自CSS 技巧的信息(感谢karthikr提供此链接)。

于 2013-11-11T17:52:43.660 回答
0

好吧,contains区分大小写...有两种方法可以不区分大小写..一种方法是覆盖函数,另一种是创建新的..

覆盖 jquery :包含。(在您的代码之前添加此内容)。

jQuery.expr[':'].contains = function(a, i, m) {
  return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0;
};

并在脚本中使用它

$("div .thumbnail .caption p a:contains(" + searchText + ")").parent().parent().parent().parent().show();

然而,这会覆盖 jquery contains

用于使用扩展创建新的

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

现在您可以使用containsIN而不是contains:,您需要使用不区分大小写的方式过滤字符串

 $("div .thumbnail .caption p a:containsIN(" + searchText + ")").parent().parent().parent().parent().show();

阅读更多关于 jquery 的链接包含不区分大小写...

此外,我建议您使用closest()orparents()而不是parent()多次...

于 2013-11-11T17:57:37.013 回答