1

追加のタスク/ステップでスライドアップと呼ぶ機能があります。断続的に、関数内のスライドアップ コードが 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
4

2 に答える 2

1

Ok。ダブルパスが発生する理由を理解できませんでした。ただし、ダブルパスに対応するための回避策を講じることができました。

    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');
      };
于 2011-08-02T15:30:28.013 に答える
1

私の頭に浮かぶ唯一の理由は、複数の要素を取得しているということですctrl_toolTip

$('#controlSlideShow .tooltip');単一の要素のみを返すことを確認してください。

于 2011-08-01T05:29:09.917 に答える