需要帮助使jQuery .find不区分大小写

时间:2012-06-13 06:26:50

标签: jquery

尝试使用.find不区分大小写的jQuery过滤器。

例如,当search =“cat”(没有引号)时,它会找到“cat”而不是“Cat”或“CAT”。同样,“猫”发现“猫”而不是“猫”。

我怀疑这是非常基本的东西,但无法弄清楚,所以我在第一篇文章中与我们联系。

我无法控制列表项本身的内容,因此无法修改任何内容,

提前感谢您的帮助!

PS请不要嘘声为你们这些可能很年轻的东西。 ;)

  $("#filter").live("keyup", function (ev) {
    var $filter = $(this),
        keyCode = ev.keyCode || ev.which,
        search;

    if (keyCode === 27) { //ESC
      $filter.val("");
    }

    search = $(this).val();
    $("#results").find("li").each(function () {
      var $li = $(this);
      if (search === "") {
        $li.show();
      } else {
        if (_.include(service_names, search)) {
          $li.toggle($li.hasClass("items-" + search));
        } else {
          if ($li.text().search(search) > 0) {
            $li.show();
          } else {
            $li.hide();
          }
        }
      }
    });
 }); 

2 个答案:

答案 0 :(得分:6)

将两个字符串转换为小写,然后执行搜索:

search = $(this).val().toLowerCase();

$li.text().toLowerCase().search(search);

答案 1 :(得分:1)

您想要进行不区分大小写的搜索。尝试使用正则表达式search(/string/i)

$("#filter").live("keyup", function (ev) {
    var $filter = $(this),
        keyCode = ev.keyCode || ev.which,
        search;

    if (keyCode === 27) { //ESC
      $filter.val("");
    }

    search = $(this).val() ;
    // added
    var search_regex = new RegExp(search, 'i');
    $("#results").find("li").each(function () {
      var $li = $(this);
      if (search === "") {
        $li.show();
      } else {
        if (_.include(service_names, search)) {
          $li.toggle($li.hasClass("items-" + search));
        } else {
          // changed here
          if (search_regex.test($li.text())) {
            $li.show();
          } else {
            $li.hide();
          }
        }
      }
    });
 }); 
相关问题