わかりました、私はそれを難しい方法でやりました...誰かがよりエレガントな解決策を持っているなら、彼がそれを共有してくれたらうれしいです! :-)
function applyChanges(source, destination) {
var srcAttributes = source[0].attributes;
var dstAttributes = destination[0].attributes;
for (var i = 0; i < dstAttributes.length; i++) {
if (typeof srcAttributes[dstAttributes[i].nodeName] === "undefined") {
destination.removeAttr(dstAttributes[i].nodeName);
}
}
for (var i = 0; i < srcAttributes.length; i++) {
if (typeof dstAttributes[srcAttributes[i].nodeName] === "undefined" || srcAttributes[srcAttributes[i].nodeName].nodeValue != dstAttributes[srcAttributes[i].nodeName].nodeValue) {
$(destination).attr(srcAttributes[i].nodeName, srcAttributes[i].nodeValue);
}
}
if (destination[0].children.length != source[0].children.length) {
destination.html(source.html());
return;
}
for (var i = 0; i < source[0].children.length; i++) {
var srcChild = source[0].children[i];
var dstChild = destination[0].children[i];
if ($(srcChild).outerHtml() != $(dstChild).outerHtml()) {
applyChanges($(srcChild), $(dstChild));
}
}
if (destination.html() != source.html()) {
destination.html(source.html());
}
}