我目前正在编写一个类似于angular中ng-repeat的代码。基本上是在html中使用for循环。 该代码会获取所有带有“loop”类的元素,并使用“info”属性中提供的信息进行处理。以下是代码: HTML
<div class="loop" data-info="i in 1 to 10">
-i-
</div>
Javascript
$(".loop").each(function(i){
var loop_info=$(this).attr("data-info");
var fin=loop_info.match(/(.*) in (\d+) to (\d+)/);
var variable=fin[1],
initial=fin[2],
final=fin[3];
var htm=$(this).html(),printed="";
for(j=initial;j<=final;j++){
var temp=htm;
var r=new RegExp("-("+variable+")-","g")
temp=temp.replace(r,j);
printed+=temp;
}
$(this).html(printed);
});
现在我还添加了一个功能,可以用数字替换变量“- variable -”。 一切都很完美,但当嵌套循环时,就会出现问题。
<div class="loop" data-info="i in 1 to 10">
<div class="loop" data-info="j in 1 to 10">
-j-
</div>
</div>
它在嵌套循环上不能工作,即-j-不会被数字替换。 我不知道为什么会发生这种情况,任何帮助将不胜感激。
i
中执行j
次。 因此,您应该首先检查任何data-info
元素是否有其他data-info
子元素,并相应地采取行动。$(this).html(printed);
将销毁第一个.each()
的元素迭代中的子内容。这意味着内部.loop
被销毁/替换,并且在此时不可访问DOM缓存。 - Roko C. Buljan