我正在尝试在jQuery循环完成其设置循环后执行一个函数。循环靠近底部
这是我目前的剧本:
$(document).ready(function() {
$("#radial_container").radmenu({
listClass: 'list', // the list class to look within for items
itemClass: 'item', // the items - NOTE: the HTML inside the item is copied into the menu item
radius: 150, // radius in pixels
animSpeed:400, // animation speed in millis
centerX: 160, // the center x axis offset
centerY: 150, // the center y axis offset
selectEvent: "click", // the select event (click)
activeItemClass: "active",
angleOffset: 185, // in degrees
onSelect: function ($selected) {
$(".radial_div_item").animate({
//opacity: 0.5
}, 0);
$selected.animate({
//opacity: 1
}, 0);
var inner = $selected.html();
var i = 0;
if ($selected.index() > 3) {
while (i < $selected.index()) {
$("#radial_container").radmenu("next");
//Do something once loop finishes
}
} else {
while ($selected.index() > i) {
$("#radial_container").radmenu("prev");
//Do something once loop finishes
}
}
}
});
});
一位朋友建议我做这样的事情,但到目前为止它对我没用:
var looping = function(callback){
*while loop*
callback();
}
我已阅读过这篇文章,但无法找到解决方案,其中linke是here。
我没有包含我的标记,因为它似乎没有必要,但如果需要我可以发布它。
谢谢大家。
答案 0 :(得分:1)
首先,看起来你的循环正在重新开始,永远不会结束。
while ($selected.index() > i) {
$("#radial_container").radmenu("prev");
//Do something once loop finishes
}
除非此代码$("#radial_container").radmenu("prev");
自动递增index()
$selected
,否则此循环将继续播放,因此您需要查看手动递增$selected.index()
或{每次迭代循环后{1}}。
但是这个问题的答案很简单,你不必在循环中运行你的函数,你可以在循环之外但在if语句中运行它。所以一旦循环完成迭代,函数就会运行,就像这样。
i
我希望有所帮助。
答案 1 :(得分:0)
但如果你不像那样包装它:
while ($selected.index() > i) {
$("#radial_container").radmenu("prev");
}
//Do something once loop finishes
它会起作用!或者我错过了什么?