javascript - 在 window.open 打开的窗口中滚动到没有 ID 的元素

标签 javascript jquery

在我的页面顶部,我有一个包含几个项目的菜单,当我单击它们时,我滚动到页面中放置 div 的位置,使用以下代码行:

$('html, body').animate({scrollTop:$(divid).position().top - 160 }, 'slow');

其中 $(divid) 包含 div 的类名。 (我正在使用 Drupal,因此无法添加 ID)。

这很流畅,但现在我在另一个页面上有相同的菜单。当我点击一个链接时,我导航到 div 所在的页面,但我无法让它滚动到 div。

经过大量研究,我找到了这段代码

$('#block-views-footer-menu-block-2 .views-row-6 a').click(function(e){
    e.preventDefault();
    var newwindow = window.open('/aanbod', '_self');

    $(newwindow.document).ready(function(){
        to_position('.field-paragraphs:nth-of-type(6)');
    });
});

其中 to_position() 包含本文中的第一行代码。

但是,to_position() 函数会在 新窗口加载之前触发。这样,当 to_position() 函数被触发时,'.field-paragraphs:nth-of-type(6)' 是未知的,因此该函数无法访问它的位置。

我真的不明白我做错了什么,感谢任何帮助。

提前致谢!

最佳答案

将信息传递给弹出窗口本身,让它为您滚动。

var newwindow = window.open('/aanbod?scrolltoposition=' + ".field-paragraphs:nth-of-type(6)", '_self');

现在在这个新窗口中,添加代码来滚动你想滚动到的位置

$(document).ready( function(){

   var elementSelector = location.search.split( "=" )[1];
   var $element = $( elementSelector );
   $('html, body').animate({scrollTop:$element.position().top - 160 }, 'slow');

} );

确保您已经在弹出窗口中包含了 jquery

关于javascript - 在 window.open 打开的窗口中滚动到没有 ID 的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35266521/

相关文章:

php - Jquery onblur 第二次不工作

javascript - JQuery 淡入淡出悬停效果 - 帮助?

javascript - 带有标题栏颜色的 Chrome 应用程序

javascript - 如何从本地天气应用程序的下拉菜单中显示国家/地区的信息?

javascript - 我的变量拒绝在我的 Div 中显示

javascript - 根据逗号分隔过滤字符串

.net - ASP.NET MVC/jQuery : Inplace Editing

php - 如何在选择后从自动完成数组中删除项目

javascript - 来自 XML 文件问题的分页 jQuery 结果集

JavaScript:页面加载时间