Почему слайд вызывается дважды (прерывистая проблема)? - PullRequest
1 голос
/ 01 августа 2011

У меня есть функция, которую я называю слайдом с дополнительными задачами / шагами. Периодически код сдвига в функции вызывается дважды. Может кто-то заметит, что я сделал не так?

Глобальная переменная

    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');  
    };

Периодически всплывающее окно вызывается дважды.
Результат

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

Ответы [ 2 ]

1 голос
/ 02 августа 2011

Хорошо. Я не мог понять, почему произошел двойной проход. Однако я смог найти обходной путь для двойного прохода.

    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');
      };
1 голос
/ 01 августа 2011

Единственная причина, которая приходит мне в голову, это то, что вы получаете более одного элемента в ctrl_toolTip

Просто убедитесь, что $('#controlSlideShow .tooltip'); возвращает только один элемент.

...