对于 Google Chrome 插件,我试图滚动到包含给定字符串的 DOM 元素。但是,在过滤了一个选择器之后,我有点迷失在 DOM 中。
$('*', 'body')
.andSelf()
.contents()
.filter(function(){
return this.nodeType === 3;
})
.filter(function(){
// Only match when contains given string anywhere in the text
if(this.nodeValue.indexOf(givenString != -1){
//idArr.push(this.offsetLeft);
var ele = $(this);
$('html, body').animate({
scrollTop: ele.offset().top
}, 2000);
return true;
}
return false;
});
每当我尝试获取 的顶部偏移量时ele
,我都会得到滚动条相对于文档的顶部偏移量。有任何想法吗?我认为这可能是我$this
在过滤器内部使用的范围问题,但this
在过滤器内部应该引用当前的 DOM 元素。
编辑:
通过调用
var ele=$(this.parentNode);
我能够获得包含文本节点的元素