如何使jQuery包含不区分大小写的内容,包括jQuery 1.8+?

如何使jQuery包含不区分大小写的内容,包括jQuery 1.8+?

我试图不敏感地使用“包含”一词。我尝试在下面的堆栈溢出问题上使用该解决方案,但没有成功:

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

为了方便起见,在这里复制解决方案:

jQuery.extend(
        jQuery.expr[':'], { 
                Contains : "jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase())>=0" });

以下是错误:

Error: q is not a functionSource File: /js/jquery-1.4.js?ver=1.4Line: 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");
    }
  });

在相同的场景中,我使用了区分大小写的“Content”,没有任何错误。有人有什么想法吗?我会很感激的。


慕丝7291255
浏览 463回答 3
3回答

蓝山帝景

这是我在当前项目中使用的,没有任何问题。看看您在这种格式上是否有更好的运气: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;     };});

至尊宝的传说

值得注意的是,答案是正确的,但只涵盖了: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; };我花了一段时间才弄明白为什么它不适合我。

幕布斯7119047

我会做这样的事     $.expr[':'].containsIgnoreCase = function (n, i, m) {         return jQuery(n).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0;     };然后离开:contains独自一人.。演示那么为什么jQuery在它的库中不支持它呢?!如果有那么简单的话.。因为你的代码传递火鸡密码了吗?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JQuery