【问题标题】:jQuery on click of button show and hide closest divsjQuery点击按钮显示和隐藏最近的div
【发布时间】:2014-12-24 23:03:02
【问题描述】:

您好,我在 laravel 中使用砖石,我基本上是将我的博客加载到砖石布局中。我有一个我输出的摘要以及所有内容,默认情况下,内容被 css 隐藏。单击后,我有一个阅读更多按钮会向该 div 中添加一个类,该类会扩展砌体块。

我也想在这个砖石块中隐藏摘要,但我似乎无法成功地做到这一点,而是将所有摘要隐藏在页面上。我尝试过使用选择器,例如父母和孩子,但我认为我在这里不太了解这个概念。当我单击 div.button #read-more 时,任何人对如何隐藏类 div.abstract 并显示 div.fullstroy 有任何想法??

我的代码的简单版本如下或请查看我的JSFIDDLE

非常感谢任何帮助。

HTML:

<div id="masonary-blogs">
    <div class="one-third column">
        <h3>title</h3>
        <div class="abstract">
            <p>abstract</p>
        </div>
        <div class="fullstory">
            <p>fullstory</p>
        </div>
        <div class="button">
            <a href="#" id="read-more">Read more</a>
        </div>
    </div>
       <div class="one-third column">
        <h3>title</h3>
        <div class="abstract">
            <p>abstract</p>
        </div>
        <div class="fullstory">
            <p>fullstory</p>
        </div>
        <div class="button">
            <a href="#" id="read-more">Read more</a>
        </div>
    </div>
        <div class="one-third column">
        <h3>title</h3>
        <div class="abstract">
            <p>abstract</p>
        </div>
        <div class="fullstory">
            <p>fullstory</p>
        </div>
        <div class="button">
            <a href="#" id="read-more">Read more</a>
        </div>
    </div>

</div>

CSS:

.one-third {
    width:23%;
    background:#dedede;
    min-height:100px;

}
.column {
    display:inline-block;
    margin-left:5px;
    margin-right:5px;
}
.fullstory {
    display:none;
}
.gigante {
    width:100%;
}
.hide {
    display:none;
}

.show {
    display:block;
}

jQuery:

$('#masonary-blogs').on('click', 'a', function(e){
    var blogItem = $(this).parents('.one-third'),
        container = $('#masonary-blogs');

    e.preventDefault();
    console.log('Blog link click');

    $('.gigante').removeClass('gigante');
    $(e.target).parents('.one-third').addClass('gigante');
    $('.one-third').children('.abstract').hide();

});

【问题讨论】:

  • 你试过JQuery的closest()函数吗? api.jquery.com/closest
  • @KyleT 是的,我试过了,我试过 $('.one-third').closest('.abstract').hide(); 但它不起作用

标签: jquery show-hide


【解决方案1】:

.abstract div 是按钮的兄弟,而不是按钮的父或子,所以它会是

$('.button').on('click',function(){
  $(this).siblings('div.abstract').hide();
})

编辑: 或者如果你想展示完整的故事并隐藏摘要,它可能类似于

$('.button').on('click',function(){
  $(this).siblings('div').toggle();
})

【讨论】:

  • 啊,是的,谢谢。我将上述内容与我现有的代码结合起来提出了这个.. $(e.target).parents().siblings('div.abstract').hide(); $(e.target).parents().siblings('div.content').show(); 它可以正常工作,非常感谢!
  • 使用 toggle() 而不是 hide 或 show 将消除一些保持 DRY 的代码
  • 你的意思是这样吗? $(e.target).parents().siblings('div.content').toggle(); 我还有一个问题,当我点击下一个阅读更多时,我想隐藏最后一个 div.fullstory 并显示最后一个 div.abstract。我怎样才能做到这一点?我会使用哪个选择器?
  • 啊,是的,干净多了!
猜你喜欢
  • 2020-05-14
  • 2016-01-20
  • 1970-01-01
  • 2016-05-21
  • 1970-01-01
  • 1970-01-01
  • 2021-06-14
  • 1970-01-01
  • 2013-01-16
相关资源
最近更新 更多