我想知道用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);
}
答案 0 :(得分:47)
$('#greatphoto').attr({
alt: 'Beijing Brush Seller',
title: 'photo by Kelly Clark'
});
的示例
答案 1 :(得分:5)
鉴于您需要花费四分之一秒来淡化结果并且这不是一个紧凑的循环,您不会注意到两者之间的任何性能差异。正如yan.kun所指出的那样,你可以通过使用attr
的多集(映射)版本使代码更简洁,但是有三个属性不是紧密循环,它不会成为< em>速度差异。 (如果是的话,我会避免完全调用attr
并使用元素自己的反射属性 - src
,alt
和title
都会被反映出来。)
话虽如此,有其他理由更新元素而不是替换元素。例如,如果您有任何处理程序附加到元素,如果您更新元素的属性,处理程序保持连接;如果您替换元素,则不会附加处理程序(因为它们附加到旧的处理程序)。更换元素也会导致重排,这可能很重要(或不重要),具体取决于您的DOM结构。