jQuery循环"添加类"之间的延迟的方法
jQuery loop an "add class" method with a delay between
我现在正在创建一个包含几个部分的网站,这些部分的元素以"级联"样式出现(一个接一个,中间有延迟)。我是这样做的:
setTimeout(function(){
$('nav .icon-hola').toggleClass('colorHigh'); },300);
setTimeout(function(){
$('nav .icon-progra').toggleClass('colorHigh'); },400);
setTimeout(function(){
$('nav .icon-sistemas').toggleClass('colorHigh'); },500);
setTimeout(function(){
$('nav .icon-equipo').toggleClass('colorHigh'); },600);
setTimeout(function(){
$('nav .icon-clases').toggleClass('colorHigh'); },700);
setTimeout(function(){
$('nav .icon-social').toggleClass('colorHigh'); },800);
setTimeout(function(){
$('nav .icon-contacto').toggleClass('colorHigh'); },900);
有没有办法创建某种循环,在这种情况下,每100毫秒给出每个$('nav [class^=icon-]')
和.addClass('colorHigh')
方法?
如果有的话,用我现在的方式做还是用另一种方式做更可靠?两者都需要相同的资源,还是其中一个需要更多的负载来应用?
这将完成工作:
<<p> 编辑代码/strong>var delay=100;
$('nav [class^=icon-]').each(function(counter){
//counter will start from 0..
timeout = delay * (counter + 1);
var selector = $(this);
setTimeout(function(){
selector.toggleClass('colorHigh');
}, timeout);
});
演示这当然会为你节省一些代码,
http://jsbin.com/yujujucoviqi/1/editvar delay = 300;
var targetSelectors = [
'nav .icon-hola',
'nav .icon-progra',
'nav .icon-sistemas'
];
function showInDelay(targetSelectors, delay, incrementDelayBy){
if(!incrementDelayBy){
incrementDelayBy=100;
}
var elems = [];
if($.type(targetSelectors)==="string"){
elems = $(targetSelectors);
}else{
elems = $(targetSelectors.join());
}
$(elems).each(function(index,selector){
setTimeout(function(){console.log(selector);
$(selector).toggleClass('colorHigh');
},delay+=incrementDelayBy);
});
}
/*call this for as many selectors eg nav bars you require*/
showInDelay(targetSelectors, delay);
/*or with a selector*/
//showInDelay("nav [class^=icon-]", delay);
您可以使用以下递归方法:
function toggleTimed(els, time){
var el = [].shift.call(els)
,fn = function () {
$(el).toggleClass('colorHigh');
if (els.length) {toggleTimed(els,time);}
};
if (el) { setTimeout(fn, time);}
}
用法可能是这样的:
toggleTimed($('[class^=icon]'),400);
在jsFiddle相关文章:
- 为什么我得到“;没有方法'indexOf'"在ExtJS4.2中尝试在网格上使用缓冲渲染器时出错
- 我怎么能读“;.on()"jQuery中的方法参数
- 无法调用方法“”;getEditResponseUrl"当使用表单ID打开表单时,绑定到工作表的Google
- 是否有任何方法可以去除“"打印时从阵列中删除
- 为什么下面抛出一个“;对象没有't支持属性或方法'importNode'"在IE11中
- 我可以't克服这个错误“;未定义的局部变量或方法`f'"任何原因
- "TypeError:无法调用方法'匹配'未定义的“;Angular JS指令中的Morris
- 获得错误“;对象没有方法'jScrollPane'"与AngularJS一起使用时
- "对象没有't支持这种性质或方法“;在IE 8中.在调试中执行精细
- "Function.createDelegate"原因;错误:对象没有't支持属性或方法
- "无法调用方法'打开'未定义的“;使用indexedDB.open时出错
- 工作方法:document.getElementById(“ElementName”).style="显示:阻
- 创建javascript日期的最简单方法;2011年4月18日"1980年6月1日”;总体安排
- 使用“;.css()"方法jQuery
- 无法调用方法“”;setHtmlContent"在GAS中
- 如何使用JQuery's”;.on()"方法来处理非本机jquery元素
- 我真的很喜欢红宝石般的方式;isACar"方法名称,但如何在js中完成
- "“聪明”;HTML中的溢出:有什么方法可以放省略号“"结尾有一个链接,可以查看整个内容
- 有没有一种方法可以在javascript中停止气泡而不使用"e”;参数
- 有没有一种简单的方法来转换“;字体"style属性添加到其中的每一个'他的个人风格