为什么我的jQuery切换不起作用?

时间:2010-08-15 14:46:12

标签: jquery

我想知道是否有人可以解决这个问题,因为我现在已经尝试了40分钟了,这应该不会那么困难。

我有一些嵌套的div,如:

<div>
<div>
Some info - <a href='#' class='slick-toggle'>[more info]</a>
    <div class='slickbox'>
        <div>
        More Content...
            <a href='#' class='slick-toggle2'>see full XML reply</a><br />
            <div class='slickbox2'>
                    <div class='xmlOutput'>
                       more content from XML source
                    </div>
            </div>
        </div>
    </div>
</div>

现在我想要发生的是当单击“光滑切换”类的链接时,带有“slickbox”类的Div隐藏或显示。在这个Div中,我点击了这个类“slick-toggle2”的其他链接我想要隐藏或显示类“slickbox2”的div(当页面被加载时,这两个div都被隐藏)。因此,如果正在显示“光滑切换”,您只能切换“slick-toggle2”。这应该很简单,但是切换仅适用于第一个DIV。任何人都可以看到我的jQuery有什么问题

  $(document).ready(function() {

        $('.slickbox').hide();
        $('.slickbox2').hide();

        $('a.slick-toggle2').click(function() {

             $(this).next("div.slickbox2").toggle(400);
            return false;
        });

        $('a.slick-toggle').click(function() {

            $(this).next("div.slickbox").toggle(400);
            return false;
        });

    });
谁能看到我哪里错了?我想我疯了吗?

请注意,我从代码中删除了超链接中的A,因为它被阻止了?

1 个答案:

答案 0 :(得分:7)

这是因为非常下一个元素是<br />,所以不是这样:

$(this).next("div.slickbox2").toggle(400);

你需要这个:

$(this).nextAll("div.slickbox2:first").toggle(400);

.next()获取非常下一个元素如果它与选择器匹配。 .nextAll()会经历以下所有兄弟姐妹,而您正在获得匹配的:first个。