多列表的jq展开收起效果

在做项目的时候碰到的一个需求要做多列表的展开和收起的效果,一开始很快就写好了,可是出现了错误,最后找到了原因是因为动画animate()的效果,最后去掉(没有过度动画蛋疼),终于解决。
效果图如下:
在这里插入图片描述
jq代码:

$(".zimu_con_list dl").each(function (i, item) {
                // console.log($(item).find("dt").html())
                var defHeight = 115;//默认高度
                var infoHeight = $(item).find("dd").height();
                if (infoHeight > defHeight) {
                    // 设置需求所在位置的默认高度,隐藏超出部分
                    $(item).find("dd").css('height', defHeight + 'px');
                    //加按钮
                    $(item).append('<p class="more"><span>展开</span><i class="sprite"></i></p>');
                }
                // 点击按钮
                $(item).find(".more").click(function () {
                    var curHeight = $(item).find("dd").height();
                    // console.log(curHeight)
                    if (curHeight == defHeight) {
                   	 	//这里看看能不能有其他的办法加个过渡效果,用animate()有错误
                        $(item).find("dd").addClass("auto");
                        $(item).find(".more").html('<span>收起</span><i class="sprite"></i>');
                        $(item).find(".more i.sprite").css("transform", "rotate(-180deg)")
                    } else {
                        $(item).find("dd").removeClass("auto");
                        $(item).find(".more").html('<span>展开</span><i class="sprite"></i>');
                    };
                    event.stopPropagation();
                });
            })
可以先选中所有需要展开收起的元素,然后对每个元素分别绑定事件,实现展开收起效果。具体实现过程如下: 1. 给需要展开收起的元素添加一个共同的 class,比如 `expandable`。 2. 使用 jQuery 选中所有的 `.expandable` 元素,然后对每个元素分别绑定事件。 3. 在事件中使用 `slideToggle()` 方法实现展开收起效果。 示例代码如下: ```html <!DOCTYPE html> <html> <head> <title>一个页面中有多个展开收起jq怎么实现</title> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <style> .expandable { padding: 10px; background-color: #eee; cursor: pointer; margin-bottom: 10px; } .expandable-content { display: none; padding: 10px; background-color: #fff; } </style> </head> <body> <div class="expandable"> <h3>标题1</h3> <div class="expandable-content"> <p>内容1</p> </div> </div> <div class="expandable"> <h3>标题2</h3> <div class="expandable-content"> <p>内容2</p> </div> </div> <div class="expandable"> <h3>标题3</h3> <div class="expandable-content"> <p>内容3</p> </div> </div> <script> $(document).ready(function() { $('.expandable').each(function() { $(this).click(function() { $(this).find('.expandable-content').slideToggle(); }); }); }); </script> </body> </html> ``` 在上述代码中,我们首先给需要展开收起的元素添加了 `.expandable` 这个 class,然后使用 jQuery 选中所有的 `.expandable` 元素,并对每个元素分别绑定了点击事件。在点击事件中,我们使用 `slideToggle()` 方法来实现展开收起效果。 注意,这里使用了 `each()` 方法对每个 `.expandable` 元素进行遍历,因为这样可以确保每个元素都被绑定了点击事件。如果直接使用 `$('.expandable').click()`,则只会对第一个元素绑定事件,其他元素则无法响应点击事件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值