如何从我的HTML代码中删除所有代码:table
,tbody
,tr
?最后我想补充所有
<td>
<input id="selectOne" type="radio" value="1" name="selectOneRadio">
</td>
带
<li>
<input id="selectOne" type="radio" value="1" name="selectOneRadio">
</li>
我需要一个jQuery函数。请帮帮我:)
<table>
<tbody>
<tr>
<td>
<input id="selectOne" type="radio" value="1" name="selectOneRadio">
<label for="selectOne">
</td>
</tr>
</tbody>
</table>
来自评论......
label
元素应保留。我尝试过:
$('table td').each(function () {
$(this).replaceWith(function () {
return $('<li>' + this.innerHTML + '</li>')
})
});
然后
jQuery.fn.unwrap = function (el) {
return this.each(function () {
$(this.childNodes).appendTo(this.parentNode);
});
};
$('tr, table, tbody').unwrap().remove();
但它对我不起作用。
答案 0 :(得分:2)
使用document.createElement
创建一个列表。然后循环遍历表的rows[]
数组,并为每个数组获取cells[]
数组并执行您需要的操作,以便将其放入列表项(可能是document.createElement
以创建列表项,然后将单元格的innerHTML
复制到其中。)
完成后,使用insertBefore
将列表放在表所在的位置,最后使用removeChild
删除表。
以上实施:
function replaceTableWithList(tableid) {
var table = document.getElementById(tableid),
rows = table.rows, cells, list = document.createElement('ul'),
len = rows.length, i, item;
for( i=0; i<len, i++) {
item = list.appendChild(document.createElement('li'));
cells = rows[i].cells;
while(cells[0].firstChild) item.appendChild(cells[0].firstChild);
// this only gets the contents of the first cell in a row
// to get the whole row will need another loop
}
table.parentNode.replaceChild(list,table);
}
答案 1 :(得分:1)
我会使用unwrap / wrap功能:
$('table').contents().unwrap();
$('tr').contents().unwrap();
$('td').contents().unwrap().wrap('<li/>');
答案 2 :(得分:0)
我将你的桌子包裹在某种容器中:
<div id="content">
<table>
<tbody>
<tr>
<td>
<input type="radio" />
</td>
</tr>
<tr>
<td>
<input type="radio" />
</td>
</tr>
<tr>
<td>
<input type="radio" />
</td>
</tr>
</tbody>
</table>
</div>
然后使用jQuery并执行以下操作:
// Hide the table
$('#content table').hide();
// Append a ul to the content div
$('<ul />').appendTo('#content');
// For each td, wrap children in an li and append to the ul
$('#content table td').each(function (index, element) {
$(element).children().appendTo('#content ul').wrap('<li />');
});