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);
テキストノードを含む要素を取得できました