jQuery 从 if 语句中解除绑定气泡

jQuery Unbind bubbles up from if statement

我正在编写代码,使 svg 元素在滚动到页面时出现。当滚动到页面上的那个位置时,我只希望代码 运行 一次。我的计划是在滚动到页面上的该位置后取消绑定滚动事件(在 if 语句内)。由于某种原因,在页面的那部分滚动到 (400 >= pos) 之前,从 if 语句中调用了解除绑定函数。我的 SVG 对象尚未创建,这是我所期望的,因为不应执行 if 语句中的代码。我怀疑解除绑定函数是从 if 语句中冒出来的。

function createSVG() {
    var pos = $('#graphics').offset().top - $(this).scrollTop();
    if(400 >= pos) {
        var animation2 = new DrawFillSVG({
            elementId: 'obj-1',
            drawTime: '2s'
        });
        var animation2 = new DrawFillSVG({
            elementId: 'obj-2',
            drawTime: '2s'
        }); 
        var animation2 = new DrawFillSVG({
            elementId: 'obj-3',
            drawTime: '2s'
        }); 
        $(this).unbind("scroll");                       
    }       
}
$(window).scroll(createSVG());

您需要将 createSVG 的函数引用传递给 scroll 事件。

使用

$(window).scroll(createSVG); //Notice removed ()

根据您当前的代码,您正在将 createSVG 函数的 return 值传递给滚动事件。