我想得到td的parrent tr的id:
在这个Jsfiddle中我得到了被抄袭的id;我只是在检查了一行时才返回这个值!
但是
$(this).parent().attr("id")
给我一个未定义的错误!获得parrent id的正确方法是什么?
由于
答案 0 :(得分:0)
答案 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)
尝试
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'));
}
});
答案 5 :(得分:0)
首先,您需要检查父标记/节点是否具有id属性。此外,如果您可以分享您的目标和相关HTML
,您会得到更好的答案