首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否有不区分大小写的jQuery :contains选择器?

是否有不区分大小写的jQuery :contains选择器?
EN

Stack Overflow用户
提问于 2008-10-09 14:30:20
回答 9查看 77.5K关注 0票数 147

是否有不区分大小写的:contains jQuery选择器,或者我应该通过循环所有元素并将它们的.text()与我的字符串进行比较来手动完成这项工作?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2008-10-09 14:37:24

我最终为jQuery 1.2所做的是:

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

这将扩展jquery,使其具有不区分大小写的:Contains选择器,而:contains选择器保持不变。

编辑:对于jQuery 1.3 (感谢@user95227)及更高版本,您需要

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

编辑:显然是通过使用

代码语言:javascript
复制
(a.textContent || a.innerText || "") 

而不是

代码语言:javascript
复制
jQuery(a).text()

在前面的表达式中,它的速度大大提高了,所以如果速度是一个问题,请自负风险。(参见@Johnquestion)

最新编辑:对于jQuery 1.8,应该是:

代码语言:javascript
复制
jQuery.expr[":"].Contains = jQuery.expr.createPseudo(function(arg) {
    return function( elem ) {
        return jQuery(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
    };
});
票数 128
EN

Stack Overflow用户

发布于 2011-02-09 01:11:46

可选地使其不区分大小写:http://bugs.jquery.com/ticket/278

代码语言:javascript
复制
$.extend($.expr[':'], {
  'containsi': function(elem, i, match, array)
  {
    return (elem.textContent || elem.innerText || '').toLowerCase()
    .indexOf((match[3] || "").toLowerCase()) >= 0;
  }
});

然后使用:containsi而不是:contains

票数 106
EN

Stack Overflow用户

发布于 2009-04-23 22:49:51

从jQuery 1.3开始,此方法已弃用。要使其正常工作,需要将其定义为函数:

代码语言:javascript
复制
jQuery.expr[':'].Contains = function(a,i,m){
    return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase())>=0;
};
票数 41
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/187537

复制
相关文章

相似问题

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