2009-03-06 5 views
16

私は現在、次のjQueryのセレクタを使用してリンクを無効にしようとしています:jQueryを使用して選択時に大文字小文字を無視する方法を教えてください。

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

問題は時々のhrefは常にページの下ケースではないかもしれないということです。これが起こると、セレクタはもはや一致しません。

これを回避する方法を知っている人はいますか?この動作を一度変更して大文字小文字を無視することはできますか?

+0

あなたはjQueryの最新バージョンを使用しているのだろうか?私は、大文字のHREFと小文字のhrefの両方を持つページで1.3.2のFFでそのセレクタをテストしたので、毎回両方とも一致しました。そのブラウザではどのブラウザを使用していますか? – cdmckay

+0

jQuery 1.3.2 with IE 7 - ただ二重チェックされ、問題はまだ起こっています。 –

+0

@cdmckay:OPは、URLが常に小文字であるとは限りません。 –

答えて

14

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

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

あなた自身のendsWithロジックを理解する必要があります。

+0

ありがとう、それはうまくいきました。私は端のために正規表現を使用しました。ちなみに、toLower()はtoLowerCase()でなければなりません。 –

+0

ああ、ありがとう。私はこれを記憶から行い、塊を忘れた。私はそれを更新しました。 – EndangeredMassa

1

あなたは機能を使用することができますjQueryのでは、 "あります"。大文字と小文字は区別されません。

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

私はこれをテストしましたが、動作しません。 – Magu

1

それは\が含まれているので、あなたが

のリテラル一部として(例えば!"#$%&'()*+,./:;<=>[email protected][\]^``{|}~など)のメタ文字のいずれかを使用したい場合はまず、これは、

VALID式ではありません2つのバックスラッシュ(\\)でエスケープする必要があります。

のSrc:あなたは/

\\/にをエスケープする必要があり http://api.jquery.com/category/selectors/

のでので、あなたの表現は$("a[href$=\\/sites\\/abcd\\/sectors]").removeAttr("href");

関連する問題