1. ホーム
  2. javascript

[解決済み] 大文字・小文字を区別しないjQuery :containsセレクタはありますか?

2022-05-06 16:53:07

質問

の大文字と小文字を区別しないバージョンはありますか? を含む それとも、すべての要素をループして、それらの .text() を私の文字列と比較する作業を手動で行うべきですか?

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

jQuery 1.2のために私が最終的に行ったことは、:

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

これはjqueryを拡張し、大文字小文字を区別しない:Containsセレクタを持つようにします。

Edit: jQuery 1.3 (thanks @user95227) 以降では、以下のものが必要です。

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

編集する どうやら、DOMに直接アクセスするには

(a.textContent || a.innerText || "") 

ではなく

jQuery(a).text()

前の表現では、かなりスピードアップしているので、スピードが気になる方は自己責任でお試しください。(参照 ジョン 's 質問 )

最新編集:jQuery 1.8の場合、そうなるはずです。

jQuery.expr[":"].Contains = jQuery.expr.createPseudo(function(arg) {
    return function( elem ) {
        return jQuery(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
    };
});