[英]JavaScript/jQuery context - proxy?
我必須以同步方式動畫元素(即等到動畫(本例中為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
});
}
如果doSomethingElse()
是另一個動畫,您可以鏈接和排隊它們保持原始上下文。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.