我创建了以下函数来绑定到我页面中所有类型为“.wrapper”的类。我遇到的问题是,当我触发任何这些事件时,var 'this' 不再指向绑定它的特定循环,而是在循环绑定的最终迭代中使用的 'this'。这似乎是我理解 var 在绑定时如何存储的错误,而不是作为值,它们存储为指针。任何人都可以帮助向我展示如何使这些绑定保持与它们的对象相关。
谢谢德文
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++;
});