滚动到div只使用文本- Wordpress



我有一个div列表,我从包含唯一文本的插件中获得。我有一个可点击的地图,当点击某些部分,将搜索文本页面,如果发现,应该滚动到它。代码将直接嵌入到WordPress管理编辑页面部分。我尝试使用:contains(string)找到字符串

$("div:contains('text')")

,但我不知道如何滚动到它。返回的多个div都有相同的类名和没有id,所以我不能单独访问它们。如有任何帮助或提示,不胜感激。

这是可能的,其他人可能知道一种方法,你可以直接滚动到一段文本,但一般来说,当你写javascript滚动到一个文档中的东西,它的滚动基于一个容器的offsetTop属性。如果同一个div中没有两个唯一的文本,那么您将需要使用一些正则表达式(我不是很擅长)来定位包含该字符串的第一个开始和结束标记。然后,您需要获得这些标记的ID,并使用该ID查找div的offsetTop属性。这取决于您的唯一文本是否直接在您滚动到的容器中,这可能会变得越来越复杂。

另一个解决方案,我刚刚意识到不久后张贴这篇文章,将是你可以遍历每个元素匹配的模式。如果你知道你的唯一文本将总是在div类"unique"中,并且你永远不会在该div中有两个匹配的文本,你可以用一个for循环遍历所有div类"unique",并检查字符串是否存在。

当你找到它所在的元素时,你可以这样滚动到它:

function findPos(obj) {
    var curtop = 0;
    if (obj.offsetParent) {
        do {
            curtop += obj.offsetTop;
        } while (obj = obj.offsetParent);
    return [curtop];
    }
}