javascript - 如何将相应的表头 (th) 复制到其表格单元格 (td)?

标签 javascript jquery

我想复制< th> 表格内容到<td>对应属性细胞。

我的表是这样的:

<table>
    <thead>
        <tr>
            <th>Heading 1</th>
            <th>Heading 2</th>
            <th>Heading 3</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Lorem</td>
            <td>lipsum</td>
            <td>dolor</td>
        </tr>
    </tbody>
</table>

这就是我想要实现的目标:

<table>
    <thead>
        <tr>
            <th>Heading 1</th>
            <th>Heading 2</th>
            <th>Heading 3</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td data-attr="Heading 1">Lorem</td>
            <td data-attr="Heading 2">lipsum</td>
            <td data-attr="Heading 3">dolor</td>
        </tr>
    </tbody>
</table>

我尝试过这个,但它不起作用:

var $th = $("thead td");
var $td = $("tbody td")

var $th = $td.closest('table').find('th').eq($td.index());
$td.attr("data-attr", $th);

jsFiddle

在我的自定义属性中,我得到 data-attr="[object Object]"插入文本。

最佳答案

获取标题条目,然后对于每一行,获取每个 td 并使用其索引从匹配的标题条目中获取文本。有多种方法可以做到这一点。

长版:

var $th = $("thead th");
var $tr = $("tbody tr");
$tr.each(function(){
    $(this).find('td').each(function(index){
        $(this).attr('data-attr', $th.eq(index).text());
    });
});

JSFiddle: http://jsfiddle.net/TrueBlueAussie/pLdzx6wm/

另一种方法(稍微快一些)是使用标题元素的索引并将文本立即应用到所有匹配的列 TD:

var $th = $("thead th");
var $tr = $("tbody tr");
$th.each(function(index){
    $tr.find('td:nth-child(' + index + ')').attr('data-attr', $(this).text());
});

JSFiddle: http://jsfiddle.net/TrueBlueAussie/pLdzx6wm/1/

最后,您可以使用相当酷的 jQuery 功能,大多数参数都可以替换为回调函数来返回值:

var $th = $("thead th");
var $tr = $("tbody tr");
$tr.each(function (index) {
    $('td', this).attr('data-attr', function () {
        return $th.eq($(this).index()).text();
    });
});

JSFiddle: http://jsfiddle.net/TrueBlueAussie/pLdzx6wm/3/

这又减少了一点:

var $th = $("thead th");
$('tbody tr td').attr('data-attr', function () {
    return $th.eq($(this).index()).text();
});

JSFiddle: http://jsfiddle.net/TrueBlueAussie/pLdzx6wm/4/

关于javascript - 如何将相应的表头 (th) 复制到其表格单元格 (td)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28320100/

相关文章:

javascript - 返回显示未定义的 javascript

jquery - 我可以在 CSS 中为带有属性选择器和类的输入定义样式吗?

jquery - S3 "Invalid according to Policy: Policy expired"

javascript - 使用链接元素包装某些文本时的 Contenteditable 错误

javascript - true 时 jQuery 禁用选项

javascript - 在不刷新页面的情况下插入记录后显示 <select> 选项

javascript - 我如何使用 jquery 动态添加或删除附加到元素的类?

Javascript将多行字符串拆分为对象

javascript - Fort Awesome 图标比浏览器预期的要大

php - 我如何使用javascript将复选框数据传递给Textarea