Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
滚动到javascript中的文本_Javascript_Jquery_Dom - Fatal编程技术网

滚动到javascript中的文本

滚动到javascript中的文本,javascript,jquery,dom,Javascript,Jquery,Dom,对于GoogleChrome插件,我试图滚动到包含给定字符串的DOM元素。但是,在筛选选择器之后,我对DOM有点迷茫 $('*', 'body') .andSelf() .contents() .filter(function(){ return this.nodeType === 3; }) .filter(function(){ // Only match when contai

对于GoogleChrome插件,我试图滚动到包含给定字符串的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)

我能够获取包含文本节点的元素,请尝试以下操作:

var matches = $('body, body *').
        addBack().
        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)
               return true;
        }).first();
基本上与您使用的过滤相同(我只是添加了一个缺少的括号)。这将为您提供与字符串匹配的第一个(如果有)textnode。但是,由于无法直接在DOM中获取textnodes位置(请参阅),您可能需要尝试一个简单的技巧,将其包装在span元素中,然后检索偏移量以滚动页面:

if(matches.length > 0){
    var offset = $(matches).wrap('<span>').parent().offset().top;
    $('html, body').animate({scrollTop: offset}, 'slow');
}
if(matches.length>0){
var offset=$(匹配).wrap(“”).parent().offset().top;
$('html,body')。动画({scrollTop:offset},'slow');
}
小提琴示例

这将返回匹配的元素。然后,您可以滚动到元素

Maybee,以获取此帮助
el = $(":not(html, body, div, table, tbody, tr):contains('" + givenString + "')")