【发布时间】:2015-01-01 11:23:19
【问题描述】:
我目前正在编写一本带有 jQuery 翻页效果的书(无插件)。到目前为止,翻页效果很好,只要您一页一页地点击。但现在我想包含一个下拉选择(即一个选择元素),以便用户可以直接跳转到所选内容。我尝试使用循环和 .each() 方法来完成这项工作,以便重复调用 turnRightPage/turnLeftPage 函数,直到显示包含所选内容的页面。但是经过相当多的反复试验和大量研究后,我认为对于我的 turnRightPage /turnLeftPage() 函数(它们是翻转相应页面的转换函数)来说,循环迭代太快了,因为循环完成了,在功能完成之前。我认为,我需要做的是找到一种方法来暂停循环,直到函数完成执行,然后在下一次迭代中恢复。我认为最有前途的方法是使用带有迭代计数器的函数,就像这里建议的那样: Javascript: wait for function in loop to finish executing before next iteration(此时感谢 jfriend00)我也读过 Invoking a jQuery function after .each() has completed 和 wait for each jQuery 以及其他类似的解决方案。
以下是我如何尝试实现 jfriend00 的回调。一旦翻页次数完成,我添加了一个返回语句来打破那个“回调循环”。
//determine whether to flip pages forward or back - first forward
if(currentPagePos < foundPagePos){ // => turn right page
//determine how many times need to turn page
if (pageDifference > 1 && pageDifference % 2 !=0) {
var numPageTurns = (pageDifference-1)/2;
pageForward (numPageTurns);
} //else if ... rest omitted for brevity
}
function pageForward (numPageTurns){
var i = 0;
function next(){
i++;
if (i <= numPageTurns){
turnRightPage ();
} else {
return;
}
}
next();
};
完整代码可以看这里:http://jsfiddle.net/snshjyxr/1/
它确实会翻页,但只有一次!我错过了什么?
我对 javascript / jQuery 还是很陌生,所以如果问题看起来太明显了,我深表歉意。任何指针表示赞赏。谢谢!
【问题讨论】:
标签: javascript jquery