1. ホーム
  2. jquery

[解決済み] jQuery 1.8+を含むjQuery Containsの大文字と小文字を区別しないようにするにはどうすればよいですか?

2023-02-20 04:40:02

質問

私は "contains" case insensitively を使用しようとしています。以下のstackoverflowの質問で解決策を使用してみましたが、うまくいきませんでした。

大文字と小文字を区別しないjQuery :containsセレクタはありますか?

便宜上、解決策をここにコピーしておきます。

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");
    }
  });

同じシナリオで大文字と小文字を区別する "contains" の私の使用は、何のエラーもなく動作します。どなたか、何かアイデアをお持ちでしょうか?私はそれを感謝します。

どのように解決するのですか?

これは、私が現在のプロジェクトで使用しているもので、何の問題もありませんでした。 このフォーマットでより良い運を持っているかどうかを参照してください。

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を参照してください。 .