如果找到元素,则仅隐藏元素

时间:2013-08-05 18:01:11

标签: javascript jquery show-hide

所以让我说我有这篇文章的情节: 我左边有一张照片,图片后面有文章内容。 在内容区域我有一个预订按钮。 如果文章被保留,那么它将在照片底部显示一个小图像(透明书写“保留”)。 这些都已完成。

接下来我要做的是从文章中删除超级按钮“保留”(如果已保留)。应该是这样的:

  1. -NormalIMG- [预订 - 按钮]
  2. -NormalIMG- [预订 - 按钮]
  3. -ReservedIMG- *
  4. -NormalIMG- [预订 - 按钮]
  5. -ReservedIMG- *
  6. -NormalIMG- [预约 - 按钮] 等等。 * 这里没有预订按钮
  7. 所以它是这样的:                                     保留                 

    <!-- reserved article -->
     <div class="article">
      <div class="image"></div>
      <div class="image-reserved"><img src="reserved.jpg" /></div>
       <div class="content">
         <a href="#" class="reserveLink">Reserve</a>
       </div>
     </div>
    <!-- reserved article //-->
    
    <!-- unreserved article -->
    <div class="article">
     <div class="image"></div>
     <div class="image-reserved"></div>
      <div class="content">
       <a href="#" class="reserveLink">Reserve</a>
      </div>
    </div>
    <!-- unreserved article //-->
    
    <!-- reserved article -->
     <div class="article">
      <div class="image"></div>
      <div class="image-reserved"><img src="reserved.jpg" /></div>
       <div class="content">
         <a href="#" class="reserveLink">Reserve</a>
       </div>
     </div>
    <!-- reserved article //-->
    

    我尝试使用类似这样的jQuery:

    if(!($('.image-reserved').find(img))) {
        $('.reserveLink').addCSS('display', 'none');
    }
    

    但是我删除了所有“预约”链接......

    我意识到我需要在找到元素'img'之后应该应用CSS属性的东西。 之后,它应该继续搜索并在必要时应用它。

    我一整天都试图通过实现与上述示例类似的不同结构(使用find,has,next等)来找出摆脱这种情况的方法......但没有成功。

    我作为最后的手段在这里张贴,我的希望完全失去了似乎很容易实现的东西......

    重要提示:我知道结构看起来很奇怪,但我想要实现的内容可能非常困难,但我不允许修改任何已编写的代码。

4 个答案:

答案 0 :(得分:0)

$('.image-reserved').next().hide()

答案 1 :(得分:0)

我建议:

$('.content').filter(function(){
    return $(this).prev('div.image-reserved').find('img').length;
}).find('a').remove();

JS Fiddle demo

参考文献:

答案 2 :(得分:0)

你应该对每个保留的图像进行迭代:

// For each image reserved
$(".image-reserved").each(function(){
    // Count the children
    var count = $(this).children("img").length;
    // If there's a child (The reserved img), then we delete the following links
    if(count > 0){
        $(this).next().children(".reserveLink").hide();  
    }
});

答案 3 :(得分:0)

$('div.image-reserved:not(:empty)+.content a.reserveLink')会找到包含内容的所有.image-reserved div,然后选择.reserveLink元素中的.content个链接。

相关问题