Jquery—查找最接近的匹配范围不是';行不通
我试图设置一个变量来匹配最近匹配范围内显示的文本。我试过10种不同的方法,当我提醒它(显示它得到了什么)时,它总是要么什么也不显示,要么说未定义 这是htmlJquery—查找最接近的匹配范围不是';行不通,jquery,Jquery,我试图设置一个变量来匹配最近匹配范围内显示的文本。我试过10种不同的方法,当我提醒它(显示它得到了什么)时,它总是要么什么也不显示,要么说未定义 这是html <div class="list-group-item"> <span class="list-group-item-heading commenter-name">Test Name</span><span class="pull-right"><a id="78564610">
<div class="list-group-item">
<span class="list-group-item-heading commenter-name">Test Name</span><span class="pull-right"><a id="78564610">Reply</a> <span class="small text-muted">Mar 29 2017, 00:59:57</span></span>
<p class="list-group-item-text">First comment on page.</p>
</div>
我试图让$test包含span的内容和类‘commenter name’——因此在本例中,$test应该设置为“test name”;但我总是得到一个空的响应或未定义的响应
如果我把它改成这样
var $test = $(this).closest('span').text();
它显示了当前范围内的所有内容(它将显示回复2017年3月29日00:59:57
),但无论出于何种原因,我都无法引用包含名称的其他范围
上面有几组HTML,但我不明白这有什么关系,因为我一直在尝试最接近的、parents、parent、prev和find
$(“a”)。单击(函数(){
var$test=$(this.parent().prev('.commenter name').text();
警报($测试);
})
测试名称回复2017年3月29日00:59:57
第页的第一条评论
并不是字面上的“最近”意思。该方法向上遍历层次结构。因为它不是锚的父母,所以你不会得到结果
对于集合中的每个元素,通过测试元素本身并在DOM树中遍历其祖先,获取与选择器匹配的第一个元素
使用
$(“a”)。单击(功能(e){
e、 预防默认值();
var$test=$(this).closest('.list-group-item').find('.commenter-name').text();
console.log($test);
});代码>
测试名称2017年3月29日00:59:57
第页的第一条评论
使用此选项。这是有效的
$(“a”)。单击(函数(){
var$test=$(this).closest('.list组项')
.find('.commenter name').text();
警报($测试);
})
测试名称
回复
2017年3月29日,00:59:57
第页的第一条评论
只是一个想法,但您是否尝试过,$(this).prev('.commenter name').text()
?如果ofc您的html结构总是像这样,只是尝试了一下,它仍然返回并发出警报,但没有任何内容(空)。我也尝试了相同的格式,但使用了最接近的格式,并用find代替它尝试这个$(this.parent().prev('.commenter name').text()
可能$(this).parent().parent().find('.commenter name').html()
@Larry7我尝试了Guradio演示,它非常完美。您还希望得到什么?谢谢!!这是可行的,它现在得到了正确的HTML:)将标记这作为答案,只要它允许我
var $test = $(this).closest('span').text();
var $test = $(this)
.closest('.list-group-item') //Target common parent
.find('.commenter-name') //target the element
.text();