在jQuery中修改属性的最短方法

时间:2013-07-05 13:40:23

标签: javascript jquery

我这样做:

$("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);

有可能吗?

2 个答案:

答案 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 });

DOCUMENTATION

相关问题