4

我正在这样做:

$("td.myTD").each( function(){
    var rowspan = $(this).attr("rowspan");
    rowspan = parseInt(rowspan) + 1;
    $(this).attr("rowspan", rowspan);                            
});

(将所有类 myTD 的 td 的行跨度增加一)。有没有更短的写法?

在一个完美的世界里,我想写这样的东西:

$("td.myTD").attr("rowspan", someMagicHereToGetTheAttrValueForEachFoundElement() + 1);

可能吗?

4

2 回答 2

14

您可以使用以下方法执行此操作.attr( attributeName, function(index, attr) )

$("td.myTD").attr("rowspan", function(index, attr){
    return parseInt(attr, 10) + 1;
});

在这里,上面的代码使用了一个函数,该函数将集合中元素的索引位置和旧属性值作为参数。然后该函数根据旧属性返回一个新的属性值。当一次修改多个元素的属性时,使用函数计算属性值特别有用。

有关详细信息,请参阅attr function(index, attr) 文档

于 2013-07-05T13:43:14.050 回答
6

.attr()可以采用一个从旧值返回新值的函数:

$("td.myTD").attr("rowspan", function(i, old) { return +old+1 });

文档

于 2013-07-05T13:43:39.807 回答