Javascript jQuery:使用类查找上一个元素

Javascript jQuery:使用类查找上一个元素,javascript,jquery,Javascript,Jquery,我有一个非常简单的问题 如何找到另一个元素的前一个元素?我尝试了下面的代码,但没有成功 HTML: 小提琴:试试这个: $('.C').click(function() { alert($(this).parent().prev('.A').html()); }); 如果您试图获取前面的兄弟姐妹,请使用 如果您试图获取父级的兄弟姐妹(如您的示例中所示),请使用.parent().prev()如果您希望以最接近的父级子女为目标,可以按照下面的定义执行 假设您有一个类似HTML

我有一个非常简单的问题

如何找到另一个元素的前一个元素?我尝试了下面的代码,但没有成功

HTML:

小提琴:试试这个:

$('.C').click(function() {

        alert($(this).parent().prev('.A').html());

});

如果您试图获取前面的兄弟姐妹,请使用


如果您试图获取父级的兄弟姐妹(如您的示例中所示),请使用
.parent().prev()

如果您希望以最接近的父级子女为目标,可以按照下面的定义执行

假设您有一个类似HTML的

<div class="top-parent">
  <div class="parent">
    <button class="add-button">Child of 1st Parent DIV</button>
  </div>
  <div class="parent">
    <button class="add-button">Child of 2nd Parent DIV</button>
  </div>
</div>
<script>
$(document).on('click','.add-button',function(){
   $(this).parents('.parent').prev().closest('.parent').find('.add-button').text('im clicked by one of the button next to my parent')
   $(this).parents('.parent').remove();
})
</script>

第一家长组的子女
第二家长组的子女
$(文档)。在('单击','上。添加按钮',函数(){
$(this).parents('.parent').prev().closest('.parent').find('.add button').text('我被我父母旁边的一个按钮单击过')
$(this.parents('.parent').remove();
})
类似地,如果您想以祖父母下一代为目标,只需将
.prev()
更改为
.next()


希望我能简化定义:)

尝试
prev('.A')
prevAll('.A')
两者都不起作用。检查小提琴。如果您查看jQuery文档,您将看到
.closest()
只返回祖先元素(或不返回任何内容),而不是祖先的兄弟元素。类似地,
.prev()
只返回前一个同级,它不会在源代码中搜索匹配的元素。谢谢nnnnnn。这就是它不能正常工作的原因。我本想在第一个上面复制的,看起来像是在后面复制的。谢谢。为什么$(this.B').prev('.A').html()可以工作,但不仅仅是:$(this.A').html()?$.nestest()查看当前元素及其祖先,并找到与选择器匹配的第一个元素$('.a')不是$('.C')的祖先,因此$(this)。最近的('.a')不会选择它。
.prev()
仅匹配同级。因为
不是
的同级,所以它不会被匹配。所以使用jquery在DOM中查找元素实际上是一个逐案的场景?你真的需要检查你的html的结构。当你试图根据一个元素与另一个元素的接近程度来查找一个元素时,这是正确的。如果邻近性不是一个问题,那么结构并不重要,因为您可以使用诸如
$('.a')
之类的选择器来匹配元素。谢谢George!有道理!对于不同的html结构,.closest()和.find()的组合是非常灵活的,只要您关心的两个元素通过一个共同的祖先容器相关联。
$('.C').click(function() {

        alert($(this).parent().prev('.A').html());

});
$('.C').click(function() {
   alert($(this).closest('.B').prev('.A').html());
});
<div class="top-parent">
  <div class="parent">
    <button class="add-button">Child of 1st Parent DIV</button>
  </div>
  <div class="parent">
    <button class="add-button">Child of 2nd Parent DIV</button>
  </div>
</div>
<script>
$(document).on('click','.add-button',function(){
   $(this).parents('.parent').prev().closest('.parent').find('.add-button').text('im clicked by one of the button next to my parent')
   $(this).parents('.parent').remove();
})
</script>