2011-01-30 7 views
0

イム次のようになります:はjqueryの機能をパラメータ化

function sp_animate_li(sp) 
{ 
    console.log ($li); 
    function animate_li() 
    { 
     $li.filter(':first') 
     .animate({ 
     height: 'show', 
     opacity: 'show' 
     }, sp, function(){ 
      animate_li(); 
     }); 
     $li = $li.not(':first'); 
    } 
} 

今、私は電話を使ってアニメーションを得ることができません

sp_animate_li(100); 

すべてのヘルプ

おかげ

答えて

1

あなたは内部関数を呼び出すのではなく、それを返すこともないので、実際に呼び出すことはできません。これを試してみてください:として

function sp_animate_li(sp) 
{ 
    console.log ($li); 
    function animate_li() 
    { 
     $li.filter(':first') 
     .animate({ 
     height: 'show', 
     opacity: 'show' 
     }, sp, function(){ 
      animate_li(); 
     }); 
     $li = $li.not(':first'); 
    } 
    return animate_li; 
} 

var inner = sp_animate_li(100); 
inner(); // calls the inner function 
+0

おっと... JavaとJavaScriptが異なる異なっている... javascriptのはすごい...機能するために変数をマッピングすることができます! –

0

不思議、原因animate_liはどこにも呼び出されません。なぜそれをラップするのではなく、animate_liにパラメータを追加しないのですか?

+0

おっと... JavaとJavaScriptが... –

1

はなぜあなたの関数を定義していない:これも混乱得ることができ、より高いスコープからの変数の使用を避ける

function animate_li($li, sp) 
{ 
    sp = sp || 250; 
    $li.first() 
     .animate({ 
      height: 'show', 
      opacity: 'show' 
      }, 
      sp, 
      function(){ 
       animate_li($li.not(':first'), sp); 
      } 
    ); 
} 

...

更新:固定再帰呼び出し。

+0

animate_liは(9行目で呼び出されている)再帰関数です。それ以外の場合は、spパラメータのみで元のものと動作します... animate_li(sp) –

+0

回答のバージョンを投稿しました... –

+0

@Pradyut Bhattacharya:答えとして投稿するのではなく、あなたの質問を(質問を編集する)代わりに含める必要があります(回答でない場合)。そして、申し訳ありませんが、私は再帰的な部分を見逃しましたが、修正するのは簡単です(私がやったこと)。 –

0
function animate_li(sp) 
{ 
    sp = sp || 250; 
    $li.filter(':first') 
     .animate({ 
     height: 'show', 
     opacity: 'show' 
     }, sp, function(){ 
     animate_li(sp); 
     }); 
    $li = $li.not(':first'); 
}