java contains大小写_如何使jQuery Contains不区分大小写,包括jQuery 1.8+?

如何使jQuery Contains不区分大小写,包括jQuery 1.8+?

我试图使用"包含" 案件不敏感。 我尝试在下面的stackoverflow问题中使用该解决方案,但它没有工作:

是否有一个不区分大小写的jQuery:包含选择器?

为方便起见,此处将复制解决方案:

jQuery.extend(

jQuery.expr[':'], {

Contains : "jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase())>=0"

});

这是错误:

Error: q is not a function

Source File: /js/jquery-1.4.js?ver=1.4

Line: 81

我在这里使用它:

$('input.preset').keyup(function() {

$(this).next().find("li").removeClass("bold");

var theMatch = $(this).val();

if (theMatch.length > 1){

theMatch = "li:Contains('" + theMatch + "')";

$(this).next().find(theMatch).addClass("bold");

}

});

我使用原始区分大小写的#34;包含" 在同一场景中工作没有任何错误。 有没有人有任何想法? 我很感激。

6个解决方案

127 votes

这是我在当前项目中使用的,没有任何问题。 看看你是否有更好的运气这种格式:

jQuery.expr[':'].Contains = function(a, i, m) {

return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0;

};

在jQuery 1.8中,这个API改变了,jQuery 1.8+版本将是:

jQuery.expr[":"].Contains = jQuery.expr.createPseudo(function(arg) {

return function( elem ) {

return jQuery(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;

};

});

你可以在这里测试一下。 有关1.8+自定义选择器的更多详细信息,请查看Sizzle wiki。

Nick Craver answered 2019-08-14T02:05:37Z

43 votes

值得注意的是,答案是正确的,但仅涵盖:Contains,而不是别名:contains,这可能会导致意外行为(或者可能被设计用于需要敏感和不敏感搜索的高级应用程序)。

这可以通过复制别名的扩展名来解决:

jQuery.expr[':'].Contains = function(a, i, m) {

return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0;

};

jQuery.expr[':'].contains = function(a, i, m) {

return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0;

};

花了一些时间来弄清楚它为什么不适合我。

Ellipsis answered 2019-08-14T02:06:16Z

27 votes

我会做这样的事情

$.expr[':'].containsIgnoreCase = function (n, i, m) {

return jQuery(n).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0;

};

和离开:contains独自...

DEMO

那么为什么jQuery在它的库中不支持它呢?! 如果这很容易......

因为你的代码是否通过火鸡代码?

Mina Gabriel answered 2019-08-14T02:07:05Z

5 votes

可能会迟到......但是,

我宁愿这样走..

$.extend($.expr[":"], {

"MyCaseInsensitiveContains": function(elem, i, match, array) {

return (elem.textContent || elem.innerText || "").toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0;

}

});

这样,你不要篡改jQuery的NATIVE'.contains'......稍后你可能需要默认的...如果被篡改,你可能会发现自己回到stackOverFlow ......

ErickBest answered 2019-08-14T02:07:28Z

0 votes

我允许自己添加我的朋友:

$.expr[":"].containsNoCase = function (el, i, m) {

var search = m[3];

if (!search) return false;

return eval("/" + search + "/i").test($(el).text());

};

bresleveloper answered 2019-08-14T02:07:53Z

0 votes

我只是能够完全忽略jQuery的区分大小写,以便使用下面的代码实现我想要的东西:

$.expr[":"].contains = $.expr.createPseudo(function(arg) {

return function( elem ) {

return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;

};

});

您可以使用此链接根据您的jQuery版本查找代码以忽略区分大小写,[https://css-tricks.com/snippets/jquery/make-jquery-contains-case-insensitive/]

此外,如果您想使用:包含并进行一些搜索,您可能需要查看此内容:[http://technarco.com/jquery/using-jquery-search-html-text-and-show-or-hide-accordingly]

Umesh Patil answered 2019-08-14T02:08:32Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值