Jquery遍历不使用.closest(),. parent()。parent()等

时间:2012-11-23 07:37:00

标签: javascript jquery dom traversal

我有一个恼人的问题,我只能得到一个元素的前两个父母,它不会超越它。 .closest()也不起作用。当我查看层次结构时,它应该按照文档中列出的规范工作。

这就是我所拥有的:

<div id="telephonezone" class="bbox">
<table id="phones" cellspacing="0" width="100%">
<thead>
<tr><th width="70">Type</th><th>Phone number</th><th width="30"></th>
</tr></thead>
<tbody><tr style="background-color: rgb(255, 255, 255); background-position: initial initial; background-repeat: initial initial;">
<td class="primaryset">N/A</td>
<td class="primaryset">0208 989 8183</td>
<td class="primaryset">
    <img data-id="0" data-dbid="1126" src="images/dandy-color/cancel.png" title="Delete."></td>
</tr>
</tbody>
</table>
</div>

我的Jquery:

$('.bbox tr td img').live('click', function(){
id = $(this).attr('data-dbid') ;
cont = $(this).parent().parent().html() ;
alert(cont);
})

cont = $(this).parent()。parent()。html();得到了&lt;的内容tr&gt ;,但如果我尝试高于那个,我就会得到未定义的。与prevAll,prev,最接近或任何组合相同的结果。

当我点击td中的图像时,如何在第一行选择div的ID?


  html += '><img data-id="'+i+'" data-dbid="'+v[4]+'" src="images/dandy-color/cancel.png" title="Delete." /></td>' ;

2 个答案:

答案 0 :(得分:0)

尝试指定您希望在所有祖先中找到第一个div父级。

$(this).parents("div:first").attr("id");

答案 1 :(得分:0)

您可能正在尝试访问已删除的元素父级。这就是遍历不起作用的原因。

<a href="#" onclick="$(this).closest('tr').remove(); console.log('this should be null:' + $(this).closest('div'))">

在此示例中,您无法访问“父母”,因为您已将其从页面中删除。