2

私が2つのdivを持っているとしましょう:

<div>&pound; 21.99</div>
<div>&pound;</div>

£記号のみを含むdivのみを選択したい場合、これについてはどうすればよいですか?

私が試してみました:

if ($('div:contains("&pound;")').length > 0) 
{
   $(this).addClass("pound");
}
4

4 に答える 4

4

問題は、ブラウザがHTMLエスケープ文字を変換していることだと思います。そのため、実際の文字を探す必要があります...これをテストしたところ、機能しました

$(document).ready(function(){
 $('div').each(function(){
  if ($(this).html() == "£"){
   $(this).addClass("pound");
  }
 })
})
于 2009-10-08T02:38:34.830 に答える
1
$('div:contains("&pound;")').each( function() {
     var text = $(this).html();
     if (text && text.match(/\s*&pound;\s*/)) {
        $(this).addClass('pound');
     }
});
于 2009-10-08T00:21:03.247 に答える
0

.filterを試してください。

私は関連情報を含むSOに関する別の質問を見つけました:

jQueryでの正規表現フィールドの検証

于 2009-10-08T00:17:23.767 に答える
0

tvanfossonのコードでは、£記号の両側に空白を使用できますが、正規表現では少し変更を加えることで実行できます。

$('div:contains("&pound;")').each( function() {
    var text = $(this).html();
    if (text && text.match(/^\s*&pound;\s*$/)) {
        $(this).addClass('pound');
        }
    });

文字列の開始と終了を示す「^」と「$」に注意してください。

于 2009-10-08T11:16:06.050 に答える