首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >jQuery :包含()选择器的大写和小写问题

jQuery :包含()选择器的大写和小写问题
EN

Stack Overflow用户
提问于 2012-01-06 01:29:56
回答 2查看 54K关注 0票数 53

我的html如下所示

代码语言:javascript
复制
<input id="txt" value=""></input>

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

我的js

代码语言:javascript
复制
$('#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,不管是大写还是小写。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-06 01:50:28

您可以将.contains筛选器更改为不区分大小写,或者创建自己的选择器。

代码语言:javascript
复制
jQuery.expr[':'].icontains = function(a, i, m) {
  return jQuery(a).text().toUpperCase()
      .indexOf(m[3].toUpperCase()) >= 0;
};

这就创建了一个新的选择器:图标(或者你也可以把它命名为insensitive-contains,或者任何你喜欢的名字)。它的用法与contains相同:$('div:icontains("Stack")');将匹配:

代码语言:javascript
复制
<div>stack</div>
<div>Stack</div>
<div>StAcKOverflow</div>

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

代码语言:javascript
复制
jQuery.expr[':'].contains = function(a, i, m) {
  return jQuery(a).text().toUpperCase()
      .indexOf(m[3].toUpperCase()) >= 0;
};

有了这些,

代码语言:javascript
复制
$("div:contains('John')");

将选择所有这三个元素:

代码语言:javascript
复制
<div>john</div>
<div>John</div>
<div>hey hey JOHN hey hey</div>
票数 135
EN

Stack Overflow用户

发布于 2012-01-06 01:37:48

我不相信有一种方法可以用一个原始的选择器做到这一点。contains选择器区分大小写,似乎没有不区分大小写的版本。我认为最好的方法是使用手动查询对象的筛选器

代码语言:javascript
复制
var filt = function (unused) {
  $(this).text().toLowerCase().indexOf(txtSearch.toLowerCase()) !== -1;
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8746882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档