2011-08-01 7 views
1

私は追加のタスク/ステップでスライドアップと呼ぶ機能を持っています。断続的に、関数内のスライドアップコードが2回呼び出されます。誰かが私が間違ったことに気づくことができますスライドアップが2回呼び出されるのはなぜですか(断続的な問題)?

グローバル変数は

var currIndex = 0; 

問題断続的に

function PreNext(direction) { 
     alert('Test #1'); 
     var thisMaxlen = homes.length - 1; // homes is an array. 
     var ctrl_toolTip = $('#controlSlideShow .tooltip'); 

     $(ctrl_toolTip).slideUp('slow' function() { 
      alert('Test #2'); 

      if (direction == 'Next') { 
       (currIndex >= thisMaxlen ? currIndex = 0 : currIndex++); 
      } 
      else { 
       (currIndex <= 0 ? currIndex = thisMaxlen : currIndex--); 
      } 
     }); 
     alert('Test #3'); 
    }; 

と機能、slideupが2回呼び出され。
結果

Test #1 
    Test #2 
    Test #2 
    Test #3 

答えて

1

私の心に来て唯一の理由はあなただけ$('#controlSlideShow .tooltip');リターンは、単一の要素ということを確認してくださいctrl_toolTip

でもっとして1つの要素を取得しているということです。

+0

Talhaにお返事ありがとうございます。私もあまりにも理由を考えていた。しかし、1つの.tooltip要素しかないと確信しています。確かに、私は$(ctrl_toolTip).lengthを使用して1を返しました。 – Tommy

+0

奇妙なことです。それをもっと明確にするために、あなたはそれを作ることができますか?それから、私はあなたを助けることができるだろうと思う –

1

私はダブルパスが起こっていた理由を理解できませんでした。しかし、私はダブルパスに対応するための回避策を導入することができました。

function PreNext(direction) { 
     alert('Test #1'); 
     var dblPassFix = 0;     // To fix the double pass in the slideup 
     var thisMaxlen = homes.length - 1; // homes is an array. 
     var ctrl_toolTip = $('#controlSlideShow .tooltip'); 

     $(ctrl_toolTip).slideUp('slow' function() { 
      alert('Test #2'); 
      dblPassFix++; 

      if (direction == 'Next') { 
       (currIndex >= thisMaxlen ? currIndex = 0 : currIndex++); 

       if (dblPassFix > 1) { 
        currIndex--; 
       } 
       ... 
      } 
      else { 
       (currIndex <= 0 ? currIndex = thisMaxlen : currIndex--); 

       if (dblPassFix > 1) { 
        currIndex++; 
       } 
       ... 
      } 
     }); 
     alert('Test #3'); 
     }; 
関連する問題