ページ内の「.wrapper」タイプのすべてのクラスにバインドする以下の関数を作成しました。私が抱えている問題は、これらのイベントのいずれかをトリガーすると、var 'this' が特定のループであるバインディングを指しなくなり、ループ バインドの最後の反復で使用された 'this' を指すことです。これは、変数が値としてではなく、バインディング時にどのように格納されるかについての私の理解に間違いがあるようです。それらはポインタとして格納されます。これらのバインドをオブジェクトに関連したままにする方法を教えてくれる人はいますか?
ありがとうデヴィン
var pullUpEl, pullUpOffset, generatedCount = 0, index = 0, wrappers = [];
$('.wrapper').each(function () {
if ($(this).hasClass('tooltip')) {
pullUpEl = $(this)[0].getElementsByTagName("div")[0].getElementsByTagName("div")[0];
pullUpOffset = pullUpEl.offsetHeight;
wrappers[index] = new iScroll($(this).attr('id'), {
useTransition: true,
fadeScrollbar: true,
hideScrollbar: false,
hScrollbar: false,
//snap: 'li',
onRefresh: function () {
if (pullUpEl.className.match('loading')) {
pullUpEl.className = '';
pullUpEl.querySelector('.pullUpLabel').innerHTML = 'Pull up to load more...';
}
},
onScrollMove: function () {
if (this.y < (this.maxScrollY - 5) && !pullUpEl.className.match('flip')) {
pullUpEl.className = 'flip';
pullUpEl.querySelector('.pullUpLabel').innerHTML = 'Release to refresh...';
this.maxScrollY = this.maxScrollY;
} else if (this.y > (this.maxScrollY + 5) && pullUpEl.className.match('flip')) {
pullUpEl.className = '';
pullUpEl.querySelector('.pullUpLabel').innerHTML = 'Pull up to load more...';
this.maxScrollY = pullUpOffset;
}
},
onScrollEnd: function () {
if (pullUpEl.className.match('flip')) {
pullUpEl.className = 'loading';
pullUpEl.querySelector('.pullUpLabel').innerHTML = 'Loading...';
pullUpAction(this, pullUpEl.parentNode.getElementsByTagName("ul")[0]);
}
}
});
} else {
wrappers[index] = new iScroll($(this).attr('id'));
}
index++;
});