jQuery层次结构问题与next()

时间:2009-04-01 18:17:06

标签: javascript jquery

当image和div标签都是段落的子项时,$("img").next().hide();似乎不起作用。

<p>
<img src="image.jpg" />
<div>text</div> // this div is set to 'display: none' by default in css
</p>

然而,如果我用<div>替换<span>

<p>
<img src="image.jpg" />
<span>text</span>
</p>

或者如果我省略<p>标签

<img src="image.jpg" />
<div>text</div>

jQuery选择器可以正常工作。任何想法为什么会这样?它与内联和块显示有关吗?如何使其工作如顶部代码示例中所述?

这是我正在使用的jQuery代码:

$(document).ready(function(){
    $("img").hover(
        function()
        {
            $(this).next().show();
        },
        function()
        {
            $(this).next().hide();
        }
    );
});

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您不应在内联元素(P)中使用块元素(DIV)。 而不是P使用DIV,类设置为P。

答案 1 :(得分:0)

p element仅允许inline-level elements作为子元素。这可能是您的第一个示例无效的原因。