Javascript Jquery使用类选择上一个元素

Javascript Jquery使用类选择上一个元素,javascript,jquery,Javascript,Jquery,我有三个要素: <div class='first'>First</div> <div class='second'>Second</div> <div class='target'>Target</div> 输出类似于:“Second undefined”,但如果我正确理解.prev()用法的参数,则应该类似于:“Second first”。 那么,如何获得具有特定类的前一个元素? 下面是供您使用的fiddle:您可以使

我有三个要素:

<div class='first'>First</div>
<div class='second'>Second</div>
<div class='target'>Target</div>
输出类似于:“Second undefined”,但如果我正确理解.prev()用法的参数,则应该类似于:“Second first”。 那么,如何获得具有特定类的前一个元素?
下面是供您使用的fiddle:

您可以使用
同级()
,它将返回具有特定类的元素,并且与调用elment的级别相同。但要确保
target

$(document).on('click','.target',function(){
    console.log($(this).siblings('.second').html());
    console.log($(this).siblings('.first').html());
});

或者您可以使用
prevAll()


在您的第二个
控制台.log()
中,您的
这个
仍然是
.target
并且它没有
。第一个
类,所以它说
未定义

要获得第一次跳水,请执行以下操作:

console.log($(this).prev().prev().html());
从jQuery文档

描述:获取中每个元素的前一个同级 匹配元素的集合,可选地由选择器过滤

选择所有前面的同级元素,而不仅仅是 在相邻同级之前,使用.prevAll()方法

因此,您应该使用
console.log($(this.prevAll('.first').html())

使用
preval()
而不是
prev()

$(文档).on('click','target',function()){
警报($(this.prevAll('.second').html());
警报($(this.prevAll('.first').html());
});

弗斯特
第二
Target
Jquery
.prev()
始终获取前一个兄弟

如果您将选择器作为参数传递,它将过滤要匹配的前面元素,如果它不匹配,它将返回undefined,在您的情况下就是这样

$('.target').prev().html() 

$('.target').prev('.second').html();
哪个将返回“秒”

如果您传递除“.second”之外的任何选择器,它总是返回未定义的,因此,您的案例

$('.target').prev('.first').html();
是exprected,返回undefined,因为“.first”与前面的元素选择器不匹配

更新: 如果你想得到第一个使用权

$('.target').prev().prev().html();
您还可以使用
$(“div:eq(3)”)
来获取确切的元素。最好的例子是
$(“ulli:eq(3)”)

$('.target').prev('.first').html();
$('.target').prev().prev().html();