2011-07-08 2 views
1

私のコードでは、prevまたはnextで渡すことができます。 私は基本的には(私は以下を試みたが、その間違った)私の関数内で変数にPNを作る方法を知りたいので、私はこれを行うことができます:Jquery:関数変数として.nextまたは.prevを渡す方法は?

doSlide($('UL li:last'), 0, next) 

または

doSlide($('UL li:last'), 15, prev) 

機能:

function doSlide(current, px, pn) { 
    $(current).animate({ 
     right: px 
    },200); 
    setTimeout(function(){ 
      doSlide($(current)."+ pn +"('li'), px);   
    },45); 
} 
+0

何である "次" と "PREV"?それらの変数ですか、あるいは要素を渡そうとしていますか? –

+0

上記の関数を見てください。マウスオーバー/アウトに基づいて.prev( 'li')を選択するか、.next( 'li')を選択するかを選択します。 –

答えて

2

私はこのような文字列としての機能をお送りしたい:

doSlide($('UL li:last'), 15, "next") 

または

doSlide($('UL li:last'), 15, "prev") 

と機能は次のようになります。

function doSlide(current, px, pn) { 
    $(current).animate({ 
     right: px 
    },200); 
    setTimeout(function(){ 
      doSlide($(current)[pn]('li'), px);   
    },45); 
} 

はそれを試してみてください。できます。

これが役に立ちます。乾杯

1

さらにあなたのコードと@Edgarビジェガスアルバラドの答えに、問題が.next()または.prev()によって返されたものがあるかどうかをチェックしませんということですので、あなたの再帰を終了することはありません、それは空のjQueryの上のあなたの機能を発射維持するすべてのオブジェクト45ms。

使用この:

function doSlide(current, px, pn) { 
    $(current).animate({ 
     right: px 
    },200); 

    var $next = $(current)[pn]('li'); 
    if($next.length){ 
     setTimeout(function(){ 
      doSlide($next, px);   
     },45); 
    } 
} 

doSlide($('ul li:first'), 15, "next"); 

// or 

doSlide($('ul li:last'), 15, "prev"); 
関連する問題