1

我有多个 div 设置,带有标题和内容。单击标题时,它会展开所选 div 上的内容,并隐藏所有其他内容。这很好用,但我需要获取所有已隐藏或显示的内容 div 的 ID。

这是我的隐藏/显示 jquery:

$(".CollapsableHeader").next(".CollapsableDiv").hide();
            $(".CollapsableHeader").click(function () {
                $('.active').not(this).toggleClass('active').next('.CollapsableDiv').slideToggle(300, function () {
                    alert($(this).next('.CollapsableDiv').attr('id'));
                });
                $(this).toggleClass('active').next().slideToggle("fast");

            });

因此,在此示例中,我的警报始终显示为undefined. 我尝试过的所有内容都显示为undefined. 知道如何获取.CollapsableDiv's 的 ID 吗?

4

1 回答 1

0

如果您在单击之后寻找id“下一个” ,请在单击处理程序中而不是回调中获取它:.CollapsableDiv.CollapsableHeaderslideToggle

$(".CollapsableHeader").next(".CollapsableDiv").hide();
            $(".CollapsableHeader").click(function () {
                // Grab it here
                var id = $(this).next('.CollapsableDiv').attr('id');
                $('.active').not(this).toggleClass('active').next('.CollapsableDiv').slideToggle(300, function () {
                    // Then use it here
                    alert(id);
                });
                $(this).toggleClass('active').next().slideToggle("fast");

            });

原因是this你的slideToggle回调内部是一个不同的元素(具体来说,它是你最终得到的 from $('.active').not(this).toggleClass('active').next('.CollapsableDiv')。)

于 2012-07-11T07:58:49.443 回答