0

私はjavascriptに関しては初心者です。私は UX デザイナーで、個人の Web サイトでコードを使用しようとしています。これまでのところ、うまくいっていますが、Google がこれまでのところ理解に役立っていないというエラーが発生しています。

私がやっていることは、次のことを行うボタンを持っていることです:

  1. クリックすると、コールバックで .toggle が統計されます。
  2. コールバックの最初の部分では、.slideDown を使用してセクションを開き、下にスクロールして非表示のコンテンツを表示します。
  3. 同時に、クリックした場所に関係なく、セクションの上部がページの上部から 50px になるように移動します。これにより、非表示のコンテンツがページ全体に表示されます。

この部分は正常に動作し、エラーはありません。これが私の問題です。

  1. コールバックでは、.slideUp を使用してコンテンツ領域を再度閉じます。これはうまくいきます。
  2. しかし、scrollTop: を再度使用しようとすると、次のエラーが発生します。

    キャッチされていない TypeError: オブジェクト # のプロパティ 'top' は関数ではありません

これが私のコーヒースクリプトです:

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"

コールバックを開始しているボタンを 2 回クリックすると、エラーが表示されます。これがなぜなのか、私にはわかりません。コールバックで同じ scrollTop を 2 回使用できないようにすることはできますか?

私がここで何をしているのか誰にも分かりませんか? 2 番目のコールバックでこれらの行を削除すると、エラーなしで動作します。

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

どこから始めればよいですか?Property 'top' of object #<Object> is not a functionエラーまたは脱落のために 2 回目のコールバックで 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 に答える