Javascript jQuery插件工作不正常

Javascript jQuery插件工作不正常,javascript,jquery,css,jquery-plugins,Javascript,Jquery,Css,Jquery Plugins,我正在开发一个名为“popup”($(.messageBox”).popup()的插件 以下是我的部分代码: $(this).fadeIn(settings.fadeDuration); console.log($(this).attr("class")); console.log(settings.timeOut); setTimeout( function(){ console.log($(this).attr("class"));

我正在开发一个名为“popup”(
$(.messageBox”).popup()的插件

以下是我的部分代码:

$(this).fadeIn(settings.fadeDuration);
    console.log($(this).attr("class"));

    console.log(settings.timeOut);
    setTimeout( function(){
        console.log($(this).attr("class"));
        $(this).fadeOut(settings.fadeDuration);
}, settings.timeOut);
这是
popup.min.js
中的代码,下面是
index.html
中的代码:

$(function(){
    $(".messageBox").popup();
});

我的弹出窗口出现,并正确淡入,但在
1000ms后不会像应该的那样淡出。。。我能做什么?我打开了控制台,但没有显示任何错误。

因为
引用在
设置超时
回调方法中是错误的

您可以使用闭包变量来保存引用

$(this).fadeIn(settings.fadeDuration);
console.log($(this).attr("class"));

console.log(settings.timeOut);
var el = this;
setTimeout( function(){
    console.log($(el).attr("class"));
    $(el).fadeOut(settings.fadeDuration);
}, settings.timeOut);
或用于将自定义上下文传递给回调

$(this).fadeIn(settings.fadeDuration);
console.log($(this).attr("class"));

console.log(settings.timeOut);
setTimeout($.proxy(function(){
    console.log($(this).attr("class"));
    $(this).fadeOut(settings.fadeDuration);
}, this), settings.timeOut);

写入控制台时,设置超时是什么?