Поместите символ в пустые div-ы с указанным классом

0

У меня есть следующий код html:

<div class="display_label">Work phone:</div>
<div class="display_work_phone display_attr"></div>

<div class="display_label">Email:</div>
<div class="display_work_phone display_attr"></div>

<div class="display_label">Comment:</div>
<div class="display_comment display_attr"></div>

Возможно, рабочий телефон и комментарий иногда будут пустые, поэтому я бы хотел заменить эту "пустоту" символом "-". Я попытался проверить, равна ли его длине 0, но я не мог понять, как заставить ее работать. Я бы хотел проверить и заменить каждый div-контент классом "display_attr", если он не имеет значения.

Теги:

3 ответа

5
Лучший ответ

Вы можете использовать : empty-selector

$('.display_work_phone, .display_comment').filter(':empty').html('-')

Примечание. Если узел содержит пустой текстовый узел, то пустой селектор не будет работать, в таком случае вы можете написать простой фильтр самостоятельно, как

$('.display_work_phone, .display_comment').filter(function () {
    return $.trim($(this).text()).length == 0
}).html('-')
  • 0
    Что если у div есть пробелы в качестве содержимого?
  • 0
    @ f00bar да .. только что обновил
Показать ещё 2 комментария
2

Вы также можете использовать css:

.display_attr:empty::after { content: '-'; }

Но это не работает, если элемент содержит пробелы.

Браузер-поддержка:

  • 2
    Поддержка браузеров? :/
  • 0
    @ F00bar developer.mozilla.org/en-US/docs/Web/CSS/::after
Показать ещё 2 комментария
1

Так я бы справился с этой проблемой..

$('.display_work_phone, .display_comment').filter(function () {
    return /^\s*$/.test($(this).text());
}).html('-');

Ещё вопросы

Сообщество Overcoder
Наверх
Меню