【问题标题】:Smooth Scrolling on same page not working在同一页面上平滑滚动不起作用
【发布时间】:2016-08-14 19:04:55
【问题描述】:

我正在尝试使用 jQuery 中的 PHP 代码在同一页面上实现平滑滚动(尝试使用 PHP 生成最终的 jquery 代码)。但由于某种原因它不起作用,如果有人能指出错误或为什么它不起作用,我将不胜感激

// When the Document Object Model is ready
   jQuery(document).ready(function(){
   // 'scroll' is the amount of pixels destination
   // is from the top of the document
   var scroll = jQuery('<?php echo get_option('smooth_scroll'); ?>').offset().top;

// When button is clicked
  jQuery('.test').click(function(){
   // Scroll down to 'scroll'
   jQuery('html, body').animate({scrollTop:scroll}, 'slow');
   // Stop the link from acting like a normal anchor link
   return false;
  });
});

我有一个带有“test”类的href链接。单击该按钮时,我希望它平滑滚动以转到同一页面的特定 div[通过 get_option('smooth_scroll')] div 将由用户更新)。

【问题讨论】:

  • 一般来说,您应该避免在 Javascript 或 jQuery 中模板化 PHP,但这是一种意见。但是,为了让任何人帮助您解决问题,您需要提供 get_option('smooth_scroll) 输出的值。您还应该查看浏览器的控制台并添加您可能遇到的任何错误。
  • 在“.offset().top;”上出现“scrolltop.js:82 Uncaught SyntaxError: missing ) after argument list”错误行

标签: php jquery wordpress


【解决方案1】:

首先——请尝试将滚动变量赋值移动到点击事件中:

jQuery(function(){
  jQuery('.test').on('click', function(e){
    e.preventDefault();
    var scroll = jQuery('<?php echo get_option('smooth_scroll'); ?>').offset().top;
    jQuery('html, body').animate({scrollTop:scroll}, 'slow');
  });
});

因为目前您可能会遇到元素不在其最终位置的情况 - 因为它是根据 DOMContentLoaded 事件计算的,该事件在加载完整的 DOM 结构后调用,但此时无法加载 CSS/JS/图像资产时刻,什么会影响计算结果。

【讨论】:

  • 我明白你的意思,但我对 jQuery 有点陌生,所以你有什么锻炼建议吗?顺便说一句,我记得你。你的网站上有一个 TinyMCE 教程,基本上我是从那个教程中学到的,谢谢 :)
  • 如果你想更好地理解 jQuery - 请阅读jQuery Enlightment free book。关于教程 - 是的,我写了一些关于在 WordPress 中使用 TinyMCE 的文章 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多