这个.end()函数有什么问题?

时间:2012-07-03 07:15:13

标签: jquery

这是我的code

<a href="javascript:void(0);" id="apri-menu">
    <span>First</span>
    <span style="display:none;">Second</span>
</a>​

$('#apri-menu').click(function () {
    $(this).find('span').first().hide().end().find('span').last().show();
    $('#menu-nascosto').show();
});​

点击我方面的链接以显示第二个范围,但似乎.end()会让人感到痛苦。

我哪里错了?

3 个答案:

答案 0 :(得分:4)

.end()的作用是“将jQuery对象返回到先前的选择状态”。在您的示例中,修改匹配对象的最后一个操作是.first(),因此.end()将时间倒回到.find('span')之后的时间。所以最终的结果就好像你写了

$(this).find('span').find('span').last().show();

...这显然不起作用,因为标记中没有嵌套的<span>

简单地摆脱第二个.find()将解决问题。

答案 1 :(得分:1)

尝试以下方式。原因是@Jon说的。

$(this).find('span:first').hide().end().find('span:last').show();

答案 2 :(得分:0)

工作演示 http://jsfiddle.net/KqdJS/

您可以返回到父.end().parent(),然后显示它,

您还可以查看上面的回复,希望这有助于:)

<强>码

$('#apri-menu').click(function () {
    $(this).find('span').first().hide().end().parent().find('span').last().show();

    $('#menu-nascosto').show();
});​