单击输入元素时,如何获取表的id? 我不需要rowId等 我已经尝试过parentNode.id,但我似乎无法获得id 最后我想做这样的事情:
var tabelid = INPUT....parentNode.parentNode.id;
var table = document.getElementById(tabelid);
示例:
答案 0 :(得分:4)
这个怎么样: -
<table id="tblTest">
<tr>
<td>
<input type="text" id="txtTest" onclick="getParent.call(this)" />
</td>
</tr>
</table>
我在这里使用call
,以便在getParent
事件回调中获取元素上下文。
function getParent()
{
var parent = this.parentNode;
var tagName = "table";
while (parent) { //Loop through until you find the desired parent tag name
if (parent.tagName && parent .tagName.toLowerCase() == tagName) {
alert(parent .id);
return;
}
else
{
parent = parent .parentNode;
}
}
}
如果您使用的是Jquery: -
在点击事件中,您可以$(this).closest('table').attr('id')
答案 1 :(得分:2)
如果您使用的是jQuery,可以使用closest
找到最接近的匹配祖先,如下所示:
var tableID = "";
$(document).ready(function(){
$('input[type="text"]').click(function(e){
tableID = $(this).closest('table').attr('id');
});
]);
修改强>
如果您确实想要对该表执行某些操作(例如添加类),则可以执行以下操作:
$(document).ready(function(){
$('input[type="text"]').click(function(e){
tableID = $(this).closest('table').addClass('myClass');
});
]);
这样就不需要获取表ID,存储它,然后根据它的ID获取表。由于您已经找到了表格以获取其ID,因此您可以立即对其进行操作。
答案 2 :(得分:0)
您必须将DOM从TD升级到TABLE,请记住,如果您没有指定,浏览器可能会注入TBODY。所以,你的代码应该是这样的:
var tableCells = document.getElementsByTagName('td'),
cellCount = tableCells.length,
i;
for (i = 0; i < cellCount; i += 1) {
tableCells[i].onclick = function () {
var tableId = getTableId(this);
console.log(tableId);
};
}
function getTableId(node) {
var element = node;
while (element.tagName.toLowerCase() !== 'table') {
element = element.parentNode;
}
return element.id;
}