jQuery更改多个属性或替换整个html

时间:2011-03-01 08:08:57

标签: jquery optimization

我想知道用jQuery更改多个属性是否更高效/更快,或者只是一次性更改所有html。这是我目前正在使用的代码。

// shows the table and changes the image to up
showTable = function(tableId){
    $('#img' + tableId).attr("src", images["up"]).attr("alt", "Hide Table").attr("title", "Hide Table");
    $('#' + tableId).fadeIn(250);
}

还是会更快?

// shows the table and changes the image to up
showTable = function(tableId){
    $('#img' + tableId).replaceWith('some html');
    $('#' + tableId).fadeIn(250);
}

2 个答案:

答案 0 :(得分:47)

$('#greatphoto').attr({
  alt: 'Beijing Brush Seller',
  title: 'photo by Kelly Clark'
});

取自jQuery Documentation

的示例

答案 1 :(得分:5)

鉴于您需要花费四分之一秒来淡化结果并且这不是一个紧凑的循环,您不会注意到两者之间的任何性能差异。正如yan.kun所指出的那样,你可以通过使用attr的多集(映射)版本使代码更简洁,但是有三个属性不是紧密循环,它不会成为< em>速度差异。 (如果是的话,我会避免完全调用attr并使用元素自己的反射属性 - srcalttitle都会被反映出来。)

话虽如此,有其他理由更新元素而不是替换元素。例如,如果您有任何处理程序附加到元素,如果您更新元素的属性,处理程序保持连接;如果您替换元素,则不会附加处理程序(因为它们附加到旧的处理程序)。更换元素也会导致重排,这可能很重要(或不重要),具体取决于您的DOM结构。