gpt4 book ai didi

JavaScript/jQuery 上下文 - 代理?

转载 作者:行者123 更新时间:2023-12-02 19:33:32 24 4
gpt4 key购买 nike

我必须以同步方式为元素设置动画(即等到动画(本例中为 fadeIn())完成,这样我才能正确继续)。

据我所知,我有三个选择:

doSomething: function () {
$('.someElement').fadeIn(function () {
// do something else here...
});
}

另一种方法(使用 $.proxy() 改变上下文):

doSomething: function () {
$('.someElement').fadeIn($.proxy(function () {
this.doSomethingElse();
}, this));
},

doSomethingElse: function () {
// ...
}

但是,由于使用 $.proxy() 有点“混合”上下文,而且我真的不喜欢这样(因为我只是不知道它什么时候会回来咬我的屁股),我有时使用这种方法:

doSomething: function () {
$('.someElement').fadeIn(function () {
doSomethingElse();
});

function doSomethingElse () {
// ...
}
}

现在我想知道有没有更好的方法?更简单、更优雅的东西。喜欢:

doSomething: function () {
$('.someElement').fadeIn(function () {
// do this in an async way...
});

// simply do something else here...
}

这个问题确实让我烦恼,因为我喜欢干净的代码,但我不喜欢这种简单但不干净的解决方案。

最佳答案

创建一个中介变量来引用您的原始对象:

doSomething: function () {
var that = this;
$('.someElement').fadeIn(function() {
// use "that" here
});
}

关于JavaScript/jQuery 上下文 - 代理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11220800/

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