1

我有一个烦人的问题,我只能得到一个元素的前两个父元素,而且不会超出这个范围。.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);
})

续 = $(this).parent().parent().html() ; 让我得到 < tr > 的内容,但如果我尝试比这更高,我只会得到未定义。与 prevAll、prev、最接近或它们的任意组合的结果相同。

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


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

2 回答 2

0

Probably you are trying to access deleted element parents. That's why traversal not working.

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

In this example you can not access 'tr's parents since you have removed it from page.

于 2014-06-13T10:51:57.393 回答
0

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

$(this).parents("div:first").attr("id");
于 2012-11-23T07:45:12.247 回答