2015-11-21 35 views
2

我的代码在我的网站下面几行:DIV空调 - 检查是否已IMG一个DIV中存在

HTML:

<div class="the-post-thumbnail"> 
    <p><img src="http://placehold.it/350x150/FF0000/FFFFFF?text=Automatic+Thumbnail" alt="" width="" height="" /></p> 
</div> 

<div class="post-body"> 
    <p><img src="http://placehold.it/350x150/00FF00/FFFFFF?text=Manual+Thumbnail" alt="" width="" height="" /></p>  
    <p>Paragraph</p> 
    <p><img src="http://placehold.it/350x150/0000FF/FFFFFF?text=Body+Image" alt="" width="" height="" /></p> 
</div> 

的JavaScript/jQuery的:

var ele = $('.post-body p:has(img):first'); 

if ($('.the-post-thumbnail img').length) { 
    ele.hide(); 
} 

else { 
    ele.show(); 
} 

我想要做的是:

  1. 检查the-post-thumbnail专区内,如果这样的图像,隐藏post-body
  2. 检查中的手工缩略图如果没有the-post-thumbnail专区内,如果这样的图像,显​​示内post-body

手动缩略图这部分的工作,但是,我已经注意到的是,如果我从post-body专区内取出人工缩略图,它会删除后,第二身体形象段落标签也是如此。

如何正确定位直接位于post-body div内的手动缩略图图像,以便我可以实现上述两个列表项,而无需添加其他类?

FYI:

这是由于交换我的网站的主题不同的一个。旧版本需要我在文章顶部手动放置每篇文章的缩略图,新主题会自动为我完成。这导致了旧帖子的重复图像。

CodePen Example

回答

2

Working fiddle

只是改变:first选择的位置应该做的工作,因为它总是会选择第一个p,并检查它是否有一个形象:

var ele = $('.post-body p:first:has(img)'); 

希望这有助于。

1

不使用任何额外的选择器,您可以检查第一段中的图像。

var ele = $('.post-body p:eq(0):has(img)');