2

这是我的代码

<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()有些痛苦。

我哪里错了?

4

3 回答 3

4

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

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

...这显然行不通,因为<span>您的标记中没有嵌套的 s 。

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

于 2012-07-03T07:18:02.713 回答
1

试试下面的方法。原因正如@Jon 所说。

$(this).find('span:first').hide().end().find('span:last').show();
于 2012-07-03T07:19:10.023 回答
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();
});​
于 2012-07-03T07:20:12.283 回答