У меня есть строка внутри div, и я хочу нацелить этот div, если число равно 0 - и если это единственный символ. Символ валюты меняется, поэтому я не могу это использовать.

Как только строка будет стоить € 1, € 10 и т. Д., И вы не захотите нацеливаться на нее - только если ее 0 и один номер в строке.

Я хочу использовать переменную if или что-то подобное, так как мне нужно добавить и добавить класс, когда строка соответствует. Что-то типа:

if( $code to match the string )
{
 $( "em.headcartsum" ).addClass( "hide" );
}

<span><em id="headercartsum">€0</em></span>
0
Xeptor 14 Дек 2015 в 13:51

4 ответа

Лучший ответ

Используйте filter() с регулярным выражением:

$('em.headercartsum').filter(function() {
  return /^\D0$/.test($.trim($(this).text()));
}).hide();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<span><em class="headercartsum">€0</em></span>
<span><em class="headercartsum">$10</em></span>
<span><em class="headercartsum">$0</em></span>

Регулярное выражение /^\D0$/ проверяет, содержит ли строка только нецифровой символ (символ валюты), за которым следует ноль.

3
Tushar 14 Дек 2015 в 11:04

Поскольку у вашего элемента есть id , вы можете использовать .toggleClass(class, condition) case:

$('.headercartsum').each(function() {
  $(this).toggleClass('hide', $(this).text().match(/(\d)/)[0] == 0);
});
.hide {
  opacity: 0.2;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span><em class="headercartsum">€10</em></span>
<span><em class="headercartsum">€0</em></span>
<span><em class="headercartsum">€10</em></span>
0
Jai 14 Дек 2015 в 11:21

Вы можете проверить номер с parseInt как это:

if(parseInt($("#headercartsum").text().trim()) === 0){
 // Execute your code here.
} 
0
Rahul Meghlan 14 Дек 2015 в 11:05

Или вы можете использовать соответствие регулярному выражению:

if($('#headercartsum').text().match(/€0/)) {
    $('em.headcartsum').addClass('hide');
}
0
Dirk Pennings 14 Дек 2015 в 10:58