我已使用eval
完成了该操作,但我读到了eval is evil。所以我很好奇:如何在没有eval()
的情况下写这个?我已经尝试了一些样本,但它没有用。是否可以在没有eval
或eval
的情况下执行此操作?
$(".test").each(function(){
var xyz = "";
var w = $(this).last().attr("name");
for(var i=0; i< (w-1);i++){
var xyz = xyz + ".prev()";
}
var x = '$(this).first().parent()' + xyz;
var y = x + '.find("td.one").attr("rowspan",'+w+');';
eval(y);
});
答案 0 :(得分:2)
eval()
不是邪恶的,它几乎总是错误的工具。例如,您的算法可以在不乱用字符串的情况下实现,因此您不需要考虑eval()
:
$(".test").each(function(){
var w = $(this).attr("name");
var el = $(this).parent();
for(var i=0; i < w-1; i++){
el = el.prev();
}
el.find("td.one").attr("rowspan", w);
});
另请注意,您对.last()
和.first()
的使用是多余的,因为在.each()
循环中this
将引用单个DOM节点。