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 值传递给滚动事件。
我正在编写代码,使 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 值传递给滚动事件。