gpt4 book ai didi

javascript - 运行一次后停止执行函数

转载 作者:搜寻专家 更新时间:2023-10-31 08:07:29 25 4
gpt4 key购买 nike

我有一个这个函数

function toDiv() {
$(".wrap")))

$('.barfill').each(function(){
var width=$(this).data('width');
$(this).animate({ width: width }, 500);
var $perctext = $('<div>', {'class': 'perctext', text: width});
$perctext.appendTo(this);
$perctext.delay(500).each(function(a) {
$(this).delay(a * 250).animate({
'left': width
}, 1000);
});
});
else {}
}

使用它在元素出现在 Pane 上后运行。

function toView(elem) {
var docViewTop = $(window).scrollTop();
var docViewBottom = docViewTop + $(window).height();
var elemTop = $(elem).offset().top;
var elemBottom = elemTop + $(elem).height();
return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
}

我希望它运行一次,当元素再次出现在 Pane 中时,该函数将不会再次触发。

我将 .one() 应用于父函数,因此它只运行一次,但没有成功

您可以查看 Fiddle Demo进一步澄清问题。



注意:为了清楚起见,我更新了这个问题,因为它似乎造成了一些误解。

最佳答案

使用.unbind()在使用后删除监听器:

$(window).scroll(toDiv);

function toView(elem) {
var docViewTop = $(window).scrollTop();
var docViewBottom = docViewTop + $(window).height();
var elemTop = $(elem).offset().top;
var elemBottom = elemTop + $(elem).height();
return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
}

function toDiv() {

if (toView(
$(".wrap"))) {
$('.barfill').each(function () {
var width = $(this).data('width');
$(this).animate({
width: width
}, 500);
var $perctext = $('<div>', {
'class': 'perctext',
text: width
});
$perctext.appendTo(this);
$perctext.delay(500).each(function (a) {
$(this).delay(a * 250).animate({
'left': width
}, 1000);
});
});
$(window).unbind('scroll');
}
}

JSFiddle

关于javascript - 运行一次后停止执行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22888327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com