刚学JQuery,希望实现这样一个效果:在如下的标签中,循环遍历one,two,three,four,每隔1秒钟设置下一个标签的属性,实现类似于“轮询”的效果。
<div id="radio">
<div id="one" class="hilite">One</div>
<div id="two">Two</div>
<div id="three">Three</div>
<div id="four">Four</div>
</div>
我写了一个实现,但是似乎不起作用。请问是什么地方出现了问题?另外还有更佳的实现方式吗?
$(document).ready(function () {
function select($pri) {
var $current = $pri.next();
$current.radioClass('hilite');
setTimeout(function() { select($current); }, 1000);
}($('#one'));
});
$.fn.radioClass = function (cls) {
return this.siblings().removeClass(cls).end().addClass(cls);
}
1.
$(document).ready(function () {
function select($pri) {
var $current = $pri.next();
$current.radioClass('hilite');
setTimeout(function() { select($current); }, 1000);
}($('#one'));
//这个写法是有问题的
//上述的写法只是 声明了一个select函数,进行了一个($('#one'))表达式求值
//并没有起到定义后立即执行的效果
});
//如果可达到你想要的效果
$(document).ready(function () {
(function select($pri) {
var $current = $pri.next();
$current.radioClass('hilite');
setTimeout(function() { select($current); }, 1000);
}($('#one')));
});
2.next方法不会自动回到头部,所以执行完最后一个兄弟节点后,就没有效果了
你需要在遍历到最后一个后,执行prev,从后往前遍历,到头后再next
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。