用JavaScript替换HTML

用JavaScript替换HTML,javascript,jquery,Javascript,Jquery,我现在正在做一个项目,将一个现有的站点迁移到一个新的服务器,并使用新的CMS使站点工作 CMS是可怕的,有大量硬编码内容。无法在CMS中编辑此内容 所以我不得不用JS替换很多HTML 我的计划是用jQuery的replaceWith方法替换HTML 这是一个合理的方法吗?或者有更好的方法吗?如果要获取dom元素,清除当前内容,然后在中添加新内容,可以执行以下操作: $(document).ready(function() { $('#myelement').empty();

我现在正在做一个项目,将一个现有的站点迁移到一个新的服务器,并使用新的CMS使站点工作

CMS是可怕的,有大量硬编码内容。无法在CMS中编辑此内容

所以我不得不用JS替换很多HTML

我的计划是用jQuery的replaceWith方法替换HTML


这是一个合理的方法吗?或者有更好的方法吗?

如果要获取dom元素,清除当前内容,然后在中添加新内容,可以执行以下操作:

$(document).ready(function() {   
    $('#myelement').empty();
    $('#myelement').append('new stuff');
});
.append()插入dom元素中已有的任何内容之后

编辑:
只是想到了一个更好的方法:

$('#myelement').html('new content');
将该选择器选择的dom元素的内容替换为新内容。基本上,它与我的第一个解决方案相同,但只有一行代码。当然,如果需要放入多个内容(例如通过读取数组向下拉列表中添加选项的循环),则需要在该循环中执行.append()


并且.html()只使用一种颜料就可以让普雷斯科特的优化欲望保持愉快;-)

如果要获取dom元素,清除当前内容,然后在中添加新内容,可以执行以下操作:

$(document).ready(function() {   
    $('#myelement').empty();
    $('#myelement').append('new stuff');
});
.append()插入dom元素中已有的任何内容之后

编辑:
只是想到了一个更好的方法:

$('#myelement').html('new content');
将该选择器选择的dom元素的内容替换为新内容。基本上,它与我的第一个解决方案相同,但只有一行代码。当然,如果需要放入多个内容(例如通过读取数组向下拉列表中添加选项的循环),则需要在该循环中执行.append()


并且.html()只使用一种颜料就可以让普雷斯科特的优化欲望保持愉快;-)

修复cms!我想你已经看过所有关于修复cms的选项了。您可以引入一个样式表来隐藏您不想要的区域,然后为您所做的事情添加新的cms模块。或者你可以使用javascript——这是我最后的选择。遗憾的是,修复CMS不是一个机会。作为一个文本模式的爱好者,与这样一个糟糕的CMS一起工作是一种拖累。修复CMS!我想你已经看过所有关于修复cms的选项了。您可以引入一个样式表来隐藏您不想要的区域,然后为您所做的事情添加新的cms模块。或者你可以使用javascript——这是我最后的选择。遗憾的是,修复CMS不是一个机会。作为一个Textpattern的爱好者,使用这样一个糟糕的CMS有点拖沓。这允许HTML吗?如下所示:$('#myelement').empty()$(“#myelement”).append('Something');正确的。显然,您必须在$(document).ready中执行此操作,以便存在那些dom元素供您更改注释。唯一的原因是调用.empty()和.append(stuff)将导致页面重新绘制两次。可能有一种方法可以通过一次重新绘制来实现这一点,replaceWith()可以通过一次重新绘制来实现,或者可以将空()隐藏在封面下..我不确定,是的,您可以在附加中放入任何您想要的内容,包括html@Prescott从何处得到.empty()将导致页面重新绘制?jquery站点上没有提到这一点。它所做的只是删除该元素的内容。我正在使用它,并附加到填充下拉列表中,根据我在fiddler中看到的,它没有重新填充任何东西。这允许HTML吗?如下所示:$('#myelement').empty()$(“#myelement”).append('Something');正确的。显然,您必须在$(document).ready中执行此操作,以便存在那些dom元素供您更改注释。唯一的原因是调用.empty()和.append(stuff)将导致页面重新绘制两次。可能有一种方法可以通过一次重新绘制来实现这一点,replaceWith()可以通过一次重新绘制来实现,或者可以将空()隐藏在封面下..我不确定,是的,您可以在附加中放入任何您想要的内容,包括html@Prescott从何处得到.empty()将导致页面重新绘制?jquery站点上没有提到这一点。它所做的只是删除该元素的内容。我使用它并附加到填充下拉列表中,根据我在fiddler中看到的内容,它并没有再填充任何其他内容