Как узнать, содержит ли элемент только знак £ с JQuery? - PullRequest
2 голосов
/ 08 октября 2009

Скажите, у меня есть 2 деления:

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

Если я хочу выбрать только div, содержащий & pound; только символ, как бы я поступил об этом?

Я пробовал:

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

Ответы [ 4 ]

4 голосов
/ 08 октября 2009

Я считаю, что проблема в том, что браузер преобразует escape-символы HTML, поэтому вам нужно искать фактический символ ... Я проверил это, и оно работает

$(document).ready(function(){
 $('div').each(function(){
  if ($(this).html() == "£"){
   $(this).addClass("pound");
  }
 })
})
1 голос
/ 08 октября 2009
$('div:contains("&pound;")').each( function() {
     var text = $(this).html();
     if (text && text.match(/\s*&pound;\s*/)) {
        $(this).addClass('pound');
     }
});
0 голосов
/ 08 октября 2009

Код tvanfosson допускает пробелы по обе стороны от знака £, но регулярное выражение может быть немного изменено:

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

обратите внимание на '^' и '$', указывающие начало и конец строки.

0 голосов
/ 08 октября 2009

Попробуйте .фильтр.

Я нашел другой вопрос по SO с соответствующей информацией:

Проверка поля регулярного выражения в jQuery

...