获取子td的父tr的id

时间:2014-03-11 03:53:33

标签: javascript jquery

我想得到td的parrent tr的id:

在这个Jsfiddle中我得到了被抄袭的id;我只是在检查了一行时才返回这个值!

但是

$(this).parent().attr("id")

给我一​​个未定义的错误!获得parrent id的正确方法是什么?

由于

6 个答案:

答案 0 :(得分:0)

尝试

只是这个工作检查演示

$(this).attr("id");

$(this)这里指的是仅

Fiddle Demo

答案 1 :(得分:0)

您可以使用:

id = $(this).attr("id");

这是因为您使用tr在表格的$("#my_tbl").find("tr").each(内循环播放,因此您已经处于tr级别。

因此,无需再使用parent()遍历父级,您只需使用$(this)来定位已检查tr的当前行td

<强> Fiddle Demo

答案 2 :(得分:0)

您只需要设置:

id = $(this).attr("id");

这是因为您正在使用该tr。

答案 3 :(得分:0)

  • 使用toggleClass()切换类
  • 使用.map()获取已检查的tr元素的ID

尝试

function myFunction(element) {
    $(element).find("td:first").toggleClass('checked');
}

function check() {
    var ids = $("#my_tbl tr td.checked").parent().map(function () {
        return this.id;
    }).get();

    if (ids.length > 0) {
        alert(ids.join());
    }
}

演示:Fiddle


更jQueryish的解决方案是使用像

这样的jQuery事件处理程序
jQuery(function ($) {
    $('#my_tbl tr').click(function () {
        $(this).find("td:first").toggleClass('checked');
    })
    $('#check').click(function () {
        var ids = $("#my_tbl tr td.checked").parent().map(function () {
            return this.id;
        }).get();

        if (ids.length > 0) {
            alert(ids.join());
        }
    })
})

演示:Fiddle

如果您只想支持IE7 + try this

答案 4 :(得分:0)

当您使用$(this).parent().attr("id")实际获得的内容为TBODY元素时,请尝试使用closest('table')parents('table')来查找TABLE的父TR 1}}。

从你的例子:

$("#my_tbl").find("tr").each(function() {
  if ($(this).find("td:first").hasClass('checked'))
  {
    count = count + 1;
    id = ($(this).closest('table').attr('id'));
    // id = ($(this).parents('table').attr('id'));
  }
});

Fiddle Demo

答案 5 :(得分:0)

首先,您需要检查父标记/节点是否具有id属性。此外,如果您可以分享您的目标和相关HTML

,您会得到更好的答案