2

ここにあるJSフィドル:http: //jsfiddle.net/8nqkA/2/

HTML

<div>
<div class="show">Test 1</div>
<div class="hidden">Test 2</div>
<div class="hidden">Test 3</div>
<div class="hidden">Test 4</div>
</div>

jQuery

$(document).ready(function() {
    myFunc($(".show"));
});

function myFunc(oEle)
{
       oEle.fadeOut('slow', function(){
            if (oEle.next())
            {
                oEle.next().fadeIn('slow', function(){
                   myFunc(oEle.next());
                });
            }
           else
               oEle.siblings(":first").fadeIn('slow', function(){
               myFunc(oEle.siblings(":first"));
               });
        });
}

CSS

.hidden {
    display: none;
}

終了後にテスト1にループバックしようとしていますが、機能しません。もう一度やり直したいのですが、何が問題なのですか?

4

2 に答える 2

1

あなたのコードで-

$(document).ready(function() {
    myFunc($(".show"));
});

    function myFunc(oEle)
    {
           oEle.fadeOut('slow', function(){
                if (oEle.next().length)
                {
                    oEle.next().fadeIn('slow', function(){
                       myFunc(oEle.next());
                    });
                }
               else
                   oEle.siblings(":first").fadeIn('slow', function(){
                   myFunc(oEle.siblings(":first"));
                   });
            });
    }

デモについてはこちらをチェックしてください-http ://jsfiddle.net/8nqkA/3/

于 2013-02-21T03:58:46.997 に答える
1
if (oEle.next()){ // This needs to be oEle.next().length
    oEle.next().fadeIn('slow', function(){
        myFunc(oEle.next());
    });
}else{ // You should wrap this in a block
    oEle.siblings(":first").fadeIn('slow', function(){
        myFunc(oEle.siblings(":first"));
    });
}

テストする理由は.length.next()ほとんどのjQueryメソッドと同様に、jQueryを返すためです。これは直接テストすることはできません。配列のように考えることができるので、.lengthプロパティは現在選択されている要素の数を提供します。

また、次のコードは複数行にまたがるため、elseコードをブロック( )でラップする必要があります。{..}

于 2013-02-21T04:04:10.797 に答える