Jquery递归更新元素类
Jquery recursive update element class
我需要一个函数来更新div的类。我希望每个节点上的秩增加1。最好用这个例子来解释我的需求:
我有一些div如下:
<div id="content">
<div id="1" class="rank2">
<div id="2" class="rank4">
<div id="3" class="rank7">
</div>
</div>
<div id="3" class="rank4">
</div>
</div>
<div id="4" class="rank2">
</div>
<div id="5" class="rank2">
</div>
</div>
我想要一个函数来更新每一个排名,像这样:
<div id="content">
<div id="1" class="rank1">
<div id="2" class="rank2">
<div id="3" class="rank3">
</div>
</div>
<div id="3" class="rank2">
</div>
</div>
<div id="4" class="rank1">
</div>
<div id="5" class="rank1">
</div>
</div>
因此每个嵌套的div的秩增加1。
My try by far:
var rank = 1;
function initRank() {
$.each($("#content").find($(".rank"+rank)), function() {
if (rank >= 2 && $(this).parents(".rank"+(rank-1).length <= 0 )) {
$(this).removeClass("rank"+rank).addClass("rank"+(rank-1));
rank--;
initRank();
}
})
rank++;
if (rank < 10) {
initRank();
} else {
return;
}
}
和Live Demo
如果你不怕递归,这里是你的演示的修改版本:https://jsfiddle.net/qo8s7xzy/3/
我使用regexp来检查现有的类,如果你想使用双位数排名,你必须改进它
.replace(/rank'd/g, "rank"+rank)
它将与div之间的其他元素一起工作,这可能是你想要的,也可能不是。
相关文章:
- Javascript更新孙窗口中的表单元素
- Mongoose-在更新中删除数组元素
- Angular没有根据模型更新我的选择元素
- 元素未使用当前玩家操作进行更新
- d3在数据更新时错误地附加了dom元素
- Javascript元素更新侦听器
- JS设置间隔在函数中,该函数将同时调用,从而导致错误的元素更新
- 当 JQuery 元素更新时,挖空 JS 自定义绑定不会更新
- 使用新的数组元素更新backbone.js模型
- 如何在后台进行ajax请求和html元素更新
- 使用ajax dom元素更新视图模型
- 如何根据另一个元素更新一个元素的宽度
- 聚合物:不使用firebase元素更新firebase数据库
- 防止元素更新- JQuery
- 从父元素更新道具时出错(执行removeChild失败)
- jQuery的hasClass()函数在元素更新后不起作用
- 通过Raphael.JS元素更新HTML信息
- 通过本机select元素更新belongsTo关系
- 使用jQuery change方法从Javascript对象和html select元素更新内容
- Angular如何在每个摘要的DOM元素更新后触发回调函数