javascript - Ajax加载方法不在div顶部加载

标签 javascript jquery ajax

我的网站有一个 div,其中使用 Ajax 加载方法加载内容。单击主页上的任何一个链接时,该页面上的另一个 div 会加载所选 url 中的内容。这是 div:

<div class="main_text">
<div id="C2"><span style="color:black">MTX</span></div>
</div>

这是脚本:

<script>
function ShowAjax(type) {
    var filename = "text_" + type + ".htm"
    $( "#C2" ).hide().load( filename ).fadeIn(500);
}
</script>

问题是,当我使用上面显示的 AJAX 脚本将新页面加载到 div 中时,如果我在加载新页面之前在其他页面上向下滚动,则新页面并不总是在顶部加载。

我希望新内容加载到 div 顶部,而不是页面下方的某个位置。

到目前为止我已经尝试了两件事。第一个是在加载后立即调用scrollTop:

    $(" #C2 ").scrollTop();

第二个是每个页面顶部的脚本,用于在文档准备就绪时触发:

<script>
$(document).ready(function(){
    $(this).scrollTop(0);
    window.scroll(0,0);
    console.log("ready to scroll top");
});
</script>

console.log 显示在开发控制台中,但它不会滚动到顶部或从顶部开始。

如何使用 Ajax 加载方法加载页面,并始终显示在 div 的顶部,显示文本的第一行,而不是从文本下方的某个位置开始(例如,从第 3 段开始) ?或者,我怎样才能在页面加载后强制它滚动到顶部?

最佳答案

首先,您似乎正在使用 scrollTop错误的。不带参数的 Scrolltop 会告诉您滚动条在元素上的位置(如果有)。 Scrolltop 带有高度参数来设置滚动条。因此 $("#C2").scrollTop() 可能会返回 0,因为该元素可能没有滚动条。由于您从不使用该值,因此它不会执行任何操作。您可能还想更改整个文档的滚动条。实际上你需要这样的东西:

$(document).scrollTop( $(target).offset().top );

Here is an example in jsbin 。向下滚动到底部可以看到要单击的按钮,然后它会带动文档滚动,将目标元素带到视口(viewport)的顶部。

  • offset 返回具有 top 和 left 属性的对象。给出元素相对于文档的位置。 .position 给出相对于父级的位置。使用该顶部数字,您可以在scrollTop 中使用该数字来更改文档的位置。
    • scrollTop 然后获取该数字(元素的顶部位置)并将文档(或其他元素)滚动到该位置。

在我看来,您似乎正在尝试使页面顶部的元素接收内容,无论单击哪个 div?

如果是这种情况,则直接选择该元素

$('#topElement').hide().load( filename ).fadeIn(500);

或者使用实际的 ajax methods 之一该加载是快捷方式,并在成功回调中定位该元素

$.ajax({
  url: filename,
  success: function( response ){
    $("#topElement").hide().html(response).fadeIn(500);
  }
)

关于javascript - Ajax加载方法不在div顶部加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56892026/

相关文章:

javascript - 在 javascript 中,如何将另一个域中的脚本作为字符串加载?

javascript - React 是如何在不需要 jQuery 的情况下允许 $.ajax 的?

php - 在 PHP 中编辑表格行,但它正在获取表格最后一行的详细信息

html - 主机名不匹配 : use a domain name (ex. https ://myname. myorg.com) 而不是 https://localhost:port

javascript - 如何根据按钮值停止切换按钮循环?

javascript - 在 javascript 中复制 python 的 __call__?

javascript - JQuery:防止多次绑定(bind)(和触发)AjaxComplete 中定义的事件

php - Ajax LARAVEL 419 POST 错误

javascript - 这个 AJAX jQuery 有什么错误?

javascript - sequelize 查询哪里喜欢