如果div为空,则将容器div设置为“display:none”

时间:2012-09-07 10:21:38

标签: javascript jquery html wordpress api

我一直试图让这些代码在过去的一天中工作,同时搜索这些论坛但没有任何成功。

如果其中一个div内部没有内容,我想要隐藏容器div

我得到的剧本如下:

$('.video-centre').each(function(){
  if ($(this).find('.video-thumb p').text().length == "")
    $(this).find('.video-centre').css("display", "none");

});

我正在尝试将其应用于以下内容的HTML:

<div class="video-centre">
  <div class="video-point">
    <img src="<?php echo get_bloginfo('template_url') ?>/images/video-point.jpg" alt="video pointer" />
  </div>
  <div class="video-thumb">
    <?php the_field('testimonials'); ?>
  </div>
  <p class="video-more">
    <a href="javascript:animatedcollapse.show(['expandable-1'])">View More</a>
  </p>
  <div id="expandable-1">
    <div class="video-thumb">
      <?php the_field('testimonials_hidden'); ?>
    </div>
    <p class="video-close">
      <a href="javascript:animatedcollapse.hide(['expandable-1'])">Close</a>
    </p>
  </div>
</div>

基本上,在wordpress中,客户端将有机会添加视频,它有点啰嗦,但它们包含在p标签中。但是,如果他们没有将任何内容上传到特定区域,我希望容器div拥有display:none,导致只有在上传视频时才会显示容器。

如果有一种更简单的方式来查看div并说它是否为空,那么让容器div显示为空,我会很乐意尝试。

6 个答案:

答案 0 :(得分:7)

使用:empty伪类

if ($(this).find('.video-thumb p').is(':empty'))

这会检查您是否有空段落(<p></p>),而

if ($(this).find('.video-thumb').is(':empty'))

检查空的.video-thumb元素


编辑后:如果div中有空格,则条件返回false,因此最好简单检查

if ($(this).find('.video-thumb p').length === 0)

示例小提琴:http://jsfiddle.net/6nyF8/6/

答案 1 :(得分:2)

你可以通过多种方式做到这一点。

$('.video-centre').each(function(){
   if($(this).find('div.video-thumb').html('') == '')
      $(this).hide();
});

OR

$('.video-centre').each(function(){
   if($(this).find('div.video-thumb').children().length == 0)
      $(this).hide();
});

答案 2 :(得分:0)

if ($(this).find('.video-thumb p').text() == "")

if ($(this).find('.video-thumb p').is(':empty'))

答案 3 :(得分:0)

希望我理解Q,这是我提出的 fiddle 。好又简单。

if ($('.video-centre').find('div:hidden').size() > 0) {
    $('.video-centre').children().hide();
}

答案 4 :(得分:0)

我会尝试删除html标记之间的换行符

<div class="video-thumb">
<?php the_field('testimonials'); ?>
</div>

应该是

<div class="video-thumb"><?php the_field('testimonials'); ?></div>

但你也可以用PHP来解决这个问题:

<?php if (the_field('testimonials')=="") $style=" style='display:none'";?>
<div class="video-thumb" <?php print $style;?>>
<?php the_field('testimonials'); ?>
</div>

答案 5 :(得分:0)

您还可以使用striptags函数检查字符串,因此从您的“推荐”值中使用内置函数“striptags”中的php删除标签,所以现在只剩下可以轻松比较的文本。