为了账号安全,请及时绑定邮箱和手机立即绑定

jquery定时遍历元素的问题

jquery定时遍历元素的问题

BIG阳 2019-04-13 08:37:12
刚学JQuery,希望实现这样一个效果:在如下的标签中,循环遍历one,two,three,four,每隔1秒钟设置下一个标签的属性,实现类似于“轮询”的效果。OneTwoThreeFour我写了一个实现,但是似乎不起作用。请问是什么地方出现了问题?另外还有更佳的实现方式吗?$(document).ready(function(){functionselect($pri){var$current=$pri.next();$current.radioClass('hilite');setTimeout(function(){select($current);},1000);}($('#one'));});$.fn.radioClass=function(cls){returnthis.siblings().removeClass(cls).end().addClass(cls);}
查看完整描述

2 回答

?
红颜莎娜

TA贡献1842条经验 获得超13个赞

1.
$(document).ready(function(){
functionselect($pri){
var$current=$pri.next();
$current.radioClass('hilite');
setTimeout(function(){select($current);},1000);
}($('#one'));
//这个写法是有问题的
//上述的写法只是声明了一个select函数,进行了一个($('#one'))表达式求值
//并没有起到定义后立即执行的效果
});
//如果可达到你想要的效果
$(document).ready(function(){
(functionselect($pri){
var$current=$pri.next();
$current.radioClass('hilite');
setTimeout(function(){select($current);},1000);
}($('#one')));
});
2.next方法不会自动回到头部,所以执行完最后一个兄弟节点后,就没有效果了你需要在遍历到最后一个后,执行prev,从后往前遍历,到头后再next
                            
查看完整回答
反对 回复 2019-04-13
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

把你想要执行的内容写成fucntion,塞入setTimeout就可以了。
$(function(){
varselector=$('#onem,#two,#three,#four');
vartimeoutCallback=function(){
varcurrent=selector.filter('.hilite');
varnext=current.next();
if(next.length<=0){
returnfalse;
}
next.addClass('hilite');
selector.removeClass('hilite');
}
setTimeout(timeoutCallback,1000);
});
另外,这个简单的示例不会一直循环下去的,因为当.hilite到最后一个元素时,timeoutCallback将返回false,你可以判断,当最手一个时,重新从第1个开始。
                            
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 329 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号