選択時に大文字と小文字を区別しないようにjQueryを使用するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/619621

質問

現在、次のjQueryセレクターを使用してリンクを無効にしようとしています:

$("a[href$=/sites/abcd/sectors]").removeAttr("href");

問題は、ページ上のhrefが常に小文字であるとは限らない場合があることです。この場合、セレクタは一致しなくなります。

これを回避する方法を知っている人はいますか?大文字と小文字を区別しないように、この動作を一度変更できますか?

役に立ちましたか?

解決

私は自分でこれに遭遇しました。大文字と小文字を区別せずに比較できるように、ロジックを少し切り替えました。もう少し作業が必要ですが、少なくとも動作します。

$('a').each(function(i,n) {
    var href = $(n).attr("href");
    href = href.toLowerCase();
    if (href.endsWith('/sites/abcd/sectors'))
        $(n).removeAttr('href');
});

独自のendsWithロジックを把握する必要があります。

他のヒント

jQueryは、拡張するために構築されました。修正するか、大文字と小文字を区別しない独自のタイプのセレクターを追加できます。

Rick Strahl:jQueryを使用してコンテンツを検索し、カスタムセレクタフィルタを作成する

関数<!> quot; is <!> quot;を使用できます。 jQueryで。大文字と小文字は区別されません。

   $("a").each(function() {
     if ($(this).is("a[href$=/sites/abcd/sectors]")) {
       $(this).removeAttr('href');
     }
   })

まず、これは NOT VALID 式です。これには\

が含まれているためです

メタ文字(!"#$%&'()*+,./:;<=>?@[\]^``{|}~など)のいずれかを

として使用する場合

名前のリテラル部分。2つのバックスラッシュで文字をエスケープする必要があります:\\

Src: http://api.jquery.com/category/selectors/

したがって、/\\/

にエスケープする必要があります

したがって、式は$("a[href$=\\/sites\\/abcd\\/sectors]").removeAttr("href");

になります
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top