我这样做:
$("td.myTD").each( function(){
var rowspan = $(this).attr("rowspan");
rowspan = parseInt(rowspan) + 1;
$(this).attr("rowspan", rowspan);
});
(使用类myTD将所有td的rowspan递增1)。是否有更短的写作方式?
在一个完美的世界里,我想写这样的东西:
$("td.myTD").attr("rowspan", someMagicHereToGetTheAttrValueForEachFoundElement() + 1);
有可能吗?
答案 0 :(得分:14)
您可以使用.attr( attributeName, function(index, attr) )
:
$("td.myTD").attr("rowspan", function(index, attr){
return parseInt(attr, 10) + 1;
});
这里,上面的代码使用一个函数,该函数将集合中元素的索引位置和旧属性值作为参数。然后该函数根据旧属性返回一个新的属性值。在一次修改多个元素的属性时,使用函数计算属性值特别有用。
有关详细信息,请参阅attr function(index, attr) documentation。
答案 1 :(得分:6)
.attr()
可以使用一个返回旧值的函数:
$("td.myTD").attr("rowspan", function(i, old) { return +old+1 });