考虑这个标记:
<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代码不起作用。有什么想法吗?
答案 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)”。