javascript - 将 .offset().top 与 .slideUp 结合使用

标签 javascript jquery mobile offset slideup

我试图让窗口滚动到单击时的元素。它正在工作,除了当前面的元素之一的 SlideUp 动画触发时,单击的元素向上滚动到顶部。

链接如下: http://jtwebfolio.com/mobi

注意:将浏览器尺寸缩小到移动设备宽度,以便更好地看到问题。此外,这也发生在投资组合项目上。

代码如下:

$('article.project header').click(function(){

    if($(this).parent().hasClass('clicked')){
        // If the clicked project has already been clicked, remove the class and hide the content
        $(this).parent().removeClass('clicked');
        $(this).parent().find('.proj_content').slideUp('fast');
    }else{
        // Remove the class and slide the content up on all projects
        $('article.project').removeClass('clicked');
        $('article.project .proj_content').slideUp('fast');

        // Add the class and show the content on the selected project
        $(this).parent().addClass('clicked');
        $(this).parent().find('.proj_content').slideDown('fast');

        // Slide the project to the top after clicking on it
        $('html, body').delay(500).animate({
            scrollTop: $(this).parent().offset().top
        }, 500);
    }

});

如果有人能帮助我达到预期的效果,那就太棒了。提前致谢!

最佳答案

有几件事:

  • 您的 .slideDown() 使用的速度fast,但您仅延迟了500ms。 快速600毫秒同义。一般来说,我认为同时使用这两种方法不是一个好主意,因为对于阅读您的代码的人来说,什么是fast 是非常令人困惑的。
  • 我不会使用 .delay() 方法,而是在 slideDownslideUp 上使用 complete 参数code>s,这样一旦完成,您就可以进行滚动。这更有意义,因为您不必担心时间冲突。
  • 我的猜测是,您的问题是由于您的转换花费了 600 毫秒而引起的,但您的滚动只等待了 500 毫秒。在 500 毫秒时,它获取了错误的偏移值并滚动到这些值。
  • 也许您应该考虑将标记更改为:

    $(this).parent().find('.proj_content').slideDown('600', function() {
      // Slide the project to the top after clicking on it
      $('html, body').animate({
          scrollTop: $(this).parent().offset().top
      }, 500);
    });
    

* 注意:为了清楚起见,我已将 fast 更改为 600

关于javascript - 将 .offset().top 与 .slideUp 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18293094/

相关文章:

c# - 保留拖动位置不起作用 : jQuery draggable: position()

mobile - 延长电池生命周期的最佳背景颜色是什么?

javascript - 输入焦点上的 iOS 键盘部分触发

python - 在 ReactJS 上使用 django Web 应用程序后端和移动应用程序

charts - 可以通过拖动点来编辑图形的图表库?

javascript - 如何设置collectionsjs等于并比较?

javascript - 从数组中删除多余的空格

javascript - 如何使用 moment JS 获取开始日期和结束日期的周数

javascript - 如何检查 php 中的空序列化字符串?

jquery - 如何限制 jQuery UI Datepicker 不允许将来的日期?