Скрыть элемент, если элемент span внутри тега div пуст с помощью jquery

#jquery #html #css

#jquery #HTML #css

Вопрос:

Я хочу скрыть элемент, если элемент span внутри div не содержит текста

ниже приведен пример HTML

 <div class="showcase-caption" style="display: block;">
 <span> If this span has no text then i need to change the display property of outer div to none</span>
</div>
  

Ссылка на JsFiddle

Я пытался сделать это с помощью css, но это сработало не так, как ожидалось. поэтому я думаю, что jquery может работать лучше и обрабатывать старые браузеры.

В этом случае мне нужно изменить встроенное свойство, которое автоматически генерируется другим скриптом для отображения подписи к изображению для галереи изображений.

Обновление: Спасибо, ребята, за ваши ответы. Я выбираю решение ‘satpal’, поскольку оно короткое и дало мне точный результат.

Ответ №1:

Просто используйте :empty . Вам не нужен блок if.

 $('.showcase-caption span:empty').parent().hide()
  

ДЕМОНСТРАЦИЯ

Ответ №2:

Обновленная демонстрация

Используйте jQuery is() и :empty псевдоселектор.

 if( $('.showcase-caption span').is(':empty') ) {
    $('.showcase-caption').hide();
} 
  

Комментарии:

1. Он по-прежнему показывает зеленую полосу из-за заполнения, я хочу скрыть его полностью

2. @sudharsan, в моей демонстрации я написал hide() код по span щелчку мыши. Так используется this

Ответ №3:

Попробуйте использовать .is() along with :empty selector для выполнения вашей задачи,

 if($('.showcase-caption span').is(':empty')) { 
  

ДЕМОНСТРАЦИЯ

Полный код:

 var cache = $('.showcase-caption');
if($('span', cache).is(':empty')) {
  cache.hide();
} 
  

ДЕМОНСТРАЦИЯ


Или вы можете просто написать с помощью :has() селектора,

 $('.showcase-caption:has(span:empty)').hide();
  

ДЕМОНСТРАЦИЯ

Ответ №4:

 if($(".showcase-caption span").html().trim().length <= 0 ){
            $(".showcase-caption").hide();
}
  

Ответ №5:

Попробуйте это.

 $(function){
    if($('.showcase-caption span').is(':empty')){
        $('.showcase-caption').css("display" , "none");
    }

    }