1

我正在尝试在单击子元素时折叠父 div,如下所示

HTML

<div class="expand">
    <h3>expand this div</h3>
    <a href="#" class="collapse" style="display:none;">Collapse</a>
</div>

CSS

.expand{
    border:2px dotted green;
}

jQuery

$('.expand').click(function(){
    $(this).stop().animate({
        width:'300px',
        height:'300px'
    });
    $('.collapse').show();
});

 $('.collapse').on('click',function(){
     $('.expand').stop().animate({
         width: '300px',
         height:'50px'
     });
 });

它不起作用,我也尝试过使用$(this).parent().animation(),但这也不起作用。

这里应该做哪些改变?

在这里生活小提琴

4

3 回答 3

2

尝试这个:

$('.collapse').on('click',function(e){
     e.stopPropagation()
     $(this).parent('.expand').stop().animate({
         width: '300px',
         height:'50px'
     });
     $(this).hide();
});

在这里演示

您的代码不起作用,因为在单击内部孩子时,也单击div了父级。div我们已经停止使用event.stopPropagation()并且您的代码运行良好。

还添加了$(this).hide()隐藏collapse点击它。

于 2013-04-16T06:09:31.623 回答
2

尝试:

$('.expand').on('click', '.collapse',function(e){
 e.stopPropagation();
 $(this).hide();
 $('.expand').stop().animate({
     width: '300px',
     height:'50px'
 });
});

演示

于 2013-04-16T06:11:29.537 回答
1

发生这种情况是因为您单击.collapse链接冒泡到.expanddiv 触发返回扩展功能。您可以通过调用来防止冒泡event.stopPropagation();

$('.collapse').on('click',function(e){
     e.stopPropagation();
     $('.expand').stop().animate({
         width: '300px',
         height:'50px'
     });
 });

http://jsfiddle.net/nvR2S/1/

于 2013-04-16T06:10:25.673 回答