gpt4 book ai didi

jQuery - 插件中带有 $(this) 的 setTimeout 函数

转载 作者:行者123 更新时间:2023-12-01 07:23:12 25 4
gpt4 key购买 nike

我的问题在某种程度上与问题here相关。 。我正在尝试制作一个插件,它显示一条消息,然后将其淡出。

这是插件:

(function($) {
$.fn.showWarning = function(msg) {
return this.each(function() {
$(this).text(msg).show().hide(); // <-preloads message
$(this).fadeIn('fast', function() {
$(this).stop().text(msg);
setTimeout(function() {
$(this).fadeOut(300);
}, 2500);
});
});
};
})(jQuery);

整个代码在这里:http://jsfiddle.net/e5kns/6/

问题是消息没有消失,所以我认为它与setTimeout有关。也许 $(this) 没有引用它应该引用的地方?

Firebug给出:

a.ownerDocument 未定义

Chrome:

未捕获类型错误:无法读取未定义的属性“defaultView”

最佳答案

你可以

$(this).stop().text(msg).delay(2500).fadeOut(300)

<小时/>事实上, this 没有引用 window 以外的任何内容。因为浏览器正在调用超时回调,并将 this 设置为 windowthis 仅基于函数的调用方式。

setTimeout($.proxy(function() {
$(this).fadeOut(300);
}, this), 2500);

会修复这个问题,因为它会生成另一个函数,该函数会丢弃 this 并使用提供的 this 并将其显式应用到您的原始函数。

关于jQuery - 插件中带有 $(this) 的 setTimeout 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11675777/

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