У меня есть следующий код 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", если он не имеет значения.
Вы можете использовать : empty-selector
$('.display_work_phone, .display_comment').filter(':empty').html('-')
Примечание. Если узел содержит пустой текстовый узел, то пустой селектор не будет работать, в таком случае вы можете написать простой фильтр самостоятельно, как
$('.display_work_phone, .display_comment').filter(function () {
return $.trim($(this).text()).length == 0
}).html('-')
Вы также можете использовать css:
.display_attr:empty::after { content: '-'; }
Но это не работает, если элемент содержит пробелы.
Браузер-поддержка:
:/
Так я бы справился с этой проблемой..
$('.display_work_phone, .display_comment').filter(function () {
return /^\s*$/.test($(this).text());
}).html('-');