在迭代某些表格单元格数据时,我构建了一个包含任何元素的数组。第一次迭代只是封装在一些<span>
标签找到的文本,而随后的那些添加了一堆其他样式,如下图所示:构建具有可读性和维护性的HTML元素
var array = $('table').find('th').map(function(i){
if (i===0){
// This bit's OK
return '<span>' + $(this).text() + '</span>';
} else {
// This just looks horrible
return '<span style="width:' + $(this).outerWidth() + 'px; display:inline-block; position:absolute; right:' + w[i-1] + 'px">' + $(this).text() + '</span>';
}
}).get();
这一切工作正常,但它是可怕的 - 我想我已经看到了一种更加优雅的方式来构建HTML元素,并在之前的某个地方使用样式。
任何人都可以提出一个更“维护友好”的方式来编写else
声明吗?
编辑:使用CSS类不是一个真正的解决方案,因为代码应用基于其他计算的值。
使用类,而不是内联CSS代码 – andrew
@andrew我想这将减少代码位,但功能也适用于宽度跨度,取决于找到的数据的宽度。 – verism
对于第一次迭代,您可以使用jQuery的['wrap'函数](http://api.jquery.com/wrap/)将您的元素封装在''中。 – nstCactus