jQuery:contains()选择器大写和小写字母的问题

前端之家收集整理的这篇文章主要介绍了jQuery:contains()选择器大写和小写字母的问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的html看起来像这样
<input id="txt" value=""></input>

<div class="link-item">jK</div>
<div class="link-item">JFOO</div>

我的js

$('#txt').keyup(function(){

    var txtsearch = $('#txt').val();
    var filt = $("div.link-item:contains('" + txtsearch +"')");

    $("div.link-item").css("display","none")
        .filter(filt)
        .css("display","block");

});

我正在寻找在客户端动态过滤内容.当我键入大写字母j时,它只返回第二个div,而我想要获取包含j的所有div,无论是大写还是小写.

解决方法

您可以将.contains过滤器更改为不区分大小写,或创建自己的选择器.
jQuery.expr[':'].icontains = function(a,i,m) {
  return jQuery(a).text().toUpperCase()
      .indexOf(m[3].toUpperCase()) >= 0;
};

这将创建一个新的选择器:icontains(或者你可以命名它不敏感 – 包含,或任何适合你的想法).
它的用法与以下内容相同:$(‘div:icontains(“Stack”)’);会匹配:

<div>stack</div>
<div>Stack</div>
<div>StAcKOverflow</div>

或覆盖现有的.contains过滤器:

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

有了这个,

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

将选择所有这三个元素:

<div>john</div>
<div>John</div>
<div>hey hey JOHN hey hey</div>

猜你在找的jQuery相关文章