用jQuery中的<li> content </li>替换所有内容

时间:2012-08-08 23:00:44

标签: javascript jquery html

如何从我的HTML代码中删除所有代码:tabletbodytr?最后我想补充所有

<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();

但它对我不起作用。

3 个答案:

答案 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 />');
});