gpt4 book ai didi

jQuery 为什么 $(this) 在 setTimeout 方法中不起作用?

转载 作者:行者123 更新时间:2023-12-01 03:54:44 26 4
gpt4 key购买 nike

我有这个 jQuery 代码:

$('#loadingDiv2')
.css('visibility','hidden') // hide it initially
.ajaxStart(function() {
$(this).css('visibility','visible');
$("#bbdata").empty();
})
.ajaxStop(function() {
$(this).css('visibility','hidden');// works here
setTimeout(function(){
$(this).css('visibility','hidden');// doesn't work here
}, 100);
});

为什么 $(this) 在 setTimeout 方法中不起作用?

最佳答案

它不起作用,因为this此时是一个不同的上下文(window),但你有一些选项,存储对你想要的内容的引用处理,像这样:

.ajaxStop(function() {
var $this = $(this);
setTimeout(function(){
$this.css('visibility','hidden');
}, 100);
});

或者使用$.proxy()用于在该匿名函数中设置上下文,如下所示:

.ajaxStop(function() {
setTimeout($.proxy(function(){
$(this).css('visibility','hidden');
}, this), 100);
});

在第一个解决方案中,我们存储对要处理的内容的引用,在第二个解决方案中,我们实际上设置 this 是该函数运行的时间...否则它将是 窗口

关于jQuery 为什么 $(this) 在 setTimeout 方法中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3913090/

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