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

Pao*_*olo 4 javascript jquery

我这样做:

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

(使用类myTD将所有td的行数增加1).是否有更短的写作方式?

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

$("td.myTD").attr("rowspan", someMagicHereToGetTheAttrValueForEachFoundElement() + 1);
Run Code Online (Sandbox Code Playgroud)

可能吗?

pal*_*aѕн 14

你可以这样做.attr( attributeName, function(index, attr) ):

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

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

有关更多信息,请参阅attr函数(index,attr)文档.


Bar*_*mar 6

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

$("td.myTD").attr("rowspan", function(i, old) { return +old+1 });
Run Code Online (Sandbox Code Playgroud)

文档