Jquery遍历使用prev()

时间:2011-10-19 09:15:24

标签: javascript jquery

  

可能重复:
  jQuery: prev(<selector>) not working?

考虑这个标记:

<tr class="store">
    <td>...</td>
    <td>...</td>
    <td>...</td>
</tr>
<tr>
    <td>...</td>
    <td>...</td>
    <td>...</td>
</tr>
<tr>
    <td>...</td>
    <td>...</td>
    <td><a href="#" class="link">link</a></td>
</tr>

然后这个Jquery代码:

$('.link').live('click', function() {
    $(this).parents('tr').prev('.store').remove();
});

我想要做的是当我尝试点击<a href="#" class=".store"时,应删除之前的<tr class="store">。我发布的Jquery代码不起作用。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

尝试demo

$('.link').live('click', function(evt) {
  evt.stopPropagation();
  $(this).closest('tr').prevAll('.store:eq(0)').remove();
});

答案 1 :(得分:0)

就像Felix Kling所说,prev选择之前的(兄弟)DOM元素,而不是所有以前的兄弟姐妹。您想使用prevAll('.store')

答案 2 :(得分:0)

.prev()只获取前一个兄弟。如果“链接行”和“存储行”之间存在间隙,则无效。你应该使用.prevAll()代替。

$('.link').live('click', function() {
    $(this).closest('tr').prevAll('.store').eq(0).remove();
});

如果要删除所有以前的“商店行”,只需删除“.eq(0)”。

Live example