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();
});​

リンクをクリックすると、2 番目のスパンが表示されますが、.end()少し苦労するようです。

どこが間違っていますか?

4

3 に答える 3

4

.end()「jQueryオブジェクトを以前の選択状態に戻す」ということです。あなたの例では、一致したオブジェクトを変更する最後の操作は.first()であるため、.end()時間をその直前まで巻き戻し.find('span')ます。したがって、最終結果はあなたが書いたかのようになります

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

...マークアップにネストされた s がないため、これは明らかに機能しません<span>

2番目を取り除くだけで.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 に答える