0

我是 javascript 的新手。我是一名 UX 设计师,我正在尝试在我的个人网站中使用一些代码。到目前为止,一切进展顺利,但我遇到了一个谷歌到目前为止还没有帮助我解决的错误。

我正在做的是有一个执行以下操作的按钮:

  1. 单击时,它会统计一个带有回调的 .toggle。
  2. 回调的第一部分使用 .slideDown 打开一个部分并向下滚动以显示隐藏的内容
  3. 同时,它会将部分的顶部移动到距页面顶部 50px 的位置,无论您单击它时它在哪里。这就是隐藏内容现在填充页面的原因。

这部分工作正常,没有错误。这是我的问题。

  1. 在回调中,我希望它使用 .slideUp 再次关闭内容区域。这工作正常。
  2. 但是当我再次尝试使用 scrollTop: 时,我得到了这个错误:

    未捕获的类型错误:对象 # 的属性“顶部”不是函数

这是我的咖啡脚本:

jQuery(document).ready theExpander = ->
  jQuery("#expander").toggle (->
    # first callback to slide it down
    jQuery(".expanding").slideDown 1000
    jQuery(this).toggleClass "darker"
    jQuery("html, body").animate
      scrollTop: jQuery(this).offset().top - 50
    , 600
    jQuery(".more").addClass "hidden"
    jQuery(".less").addClass "shown"
  ), ->
    # second callback to slide it up
    jQuery(".expanding").slideUp 1000
    jQuery(this).toggleClass "darker"
    jQuery("html, body").animate
      scrollTop: jQuery(this).offset().top 200
    , 600
    jQuery(".more").removeClass "hidden"
    jQuery(".less").removeClass "shown"

该错误出现在第二次单击启动回调的按钮上。我不知道为什么会这样。我不能让回调使用相同的 scrollTop 两次吗?

有人知道我在这里做什么吗?如果我在第二次回调中删除这些行,它可以正常工作:

    jQuery("html, body").animate
      scrollTop: jQuery(this).offset().top 200
    , 600

我从哪里开始?我是否需要在第二次回调中重新识别Property 'top' of object #<Object> is not a function错误或遗漏的 ID?

我是通过极端的反复试验来写这篇文章的,这是我做过的第一次回调。如果有人能指出我的方式的错误,将不胜感激。

4

1 回答 1

1
jQuery(this).offset().top 200

被翻译成

jQuery(this).offset().top(200)

由于 top 不是一个函数,而是一个属性,所以你会得到一个错误。

你是这个意思吗?

jQuery(this).offset().top - 200
于 2013-01-28T20:02:42.093 回答