我只想将所有<p>
代码替换为<tr>
function test() {
$("p").each(function(index) {
var htmlStr = $(this).html();
$(this).replaceWith("<tr>" + htmlStr + "<\/tr>");
});
}
它不起作用。替换确实有效,但删除了<p>
标记的html内容。所以输出就像<tr></tr>
此外,这个功能将遍历整个html页面,对吧?我只是想在#content_div
处理它。我应该在$("p")
之前添加任何内容吗?
答案 0 :(得分:3)
这是因为<TR>
不能包含<TH>
或<TD>
以外的任何内容。 jsFiddle
function test() {
$("#content_div").find('p').each(function(index) {
var htmlStr = $(this).html();
$(this).replaceWith("<tr><td>" + htmlStr + "</td><\/tr>");
});
}
答案 1 :(得分:0)
您可能看不到任何内容,因为您在tr标签中创建内容作为示例http://jsfiddle.net/Pf5n3/
对于要显示的内容,如果您还没有像这样的tr,那么您需要将您的内容放在td中 http://jsfiddle.net/Pf5n3/1/
答案 2 :(得分:0)
通过搜索/替换函数直接操作HTML是不可靠的 - 正在解析的HTML中的任何属性都会破坏代码..
我选择这样做..给出
的任何空目标表<table>
<tbody></tbody>
</table>
使用此javascript
function test() {
$("p").each(function(index) {
$("tbody").append($("<tr></tr>").html(this.innerHTML));
$(this).remove();
});
}
答案 3 :(得分:0)
我做了一些实验,并认为你可以使用jQuery的wrap函数在元素周围添加一个标记。这会留下段落标签,但这可能不是您主要关注的问题。这导致一些非常容易遵循的代码:
$("#content_div p").wrap("<tr>");
但是,这在其他帖子中没有任何意义,因为您可能还需要一个TD标签,并且可能还有一个围绕所有元素的表标签。您的代码将如下所示:
$("#content_div p").wrapAll("<table>");
$("#content_div p").wrap("<tr><td>");