1

我有一个功能,我称之为带有附加任务/步骤的幻灯片。函数内的上滑代码会间歇性地被调用两次。有人能看出我做错了什么吗?

全局变量

    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
4

2 回答 2

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

我想到的唯一原因是你得到了不止一个元素ctrl_toolTip

只要确保$('#controlSlideShow .tooltip');只返回单个元素。

于 2011-08-01T05:29:09.917 回答