1

私は誰かが次のスクリプトで私を助けてくれることを望んでいました:

jQuery(document).ready(function($) {
  $(".infoBoxBtn a").click(function(e){
      e.preventDefault();
      $("#info-box").animate({marginTop: '67px'}, 2000, 'easeOutBounce');

      $(".infoBoxBtn a").addClass("active");
  });

  $(".infoBoxBtn a.active").click(function(e){
      e.preventDefault();
      $("#info-box").animate({marginTop: '-434px'}, 2000, 'easeOutBounce');

      $(".infoBoxBtn a").removeClass("active");
  });

});//end

これは私がSafariで得るエラーです:

TypeError: 'undefined' is not a function (evaluating 'f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration)')

jQueryAPIサイトでjQueryAnimateに関する記事を読みましたが、ここで何が間違っているのかわかりません。

ありがとう!:)

4

1 に答える 1

5

元の回答について-jQueryUIエフェクトライブラリをロードする必要があります。

クロージングアニメーションについては、アンカーがクリックされるたびにコードをリファクタリングして、現在のステータスを確認します。

このコードを考えてみましょう:

$(function() {
  $('.infoBoxBtn a').on('click', function (e) {
    e.preventDefault();
    t = $(this);
    if (t.hasClass('active')) {
      margin_top = '-434px';
    }
    else {
      margin_top = '67px';
    }

    $('#info-box').stop(true, true).animate({ marginTop : margin_top }, 2000, 'easeOutBounce');
    t.toggleClass('active');
  });
});

私が変更したいくつかのこと:

  • bind()/ click()の代わりに.on()を使用
  • .hasClass()および.toggleClass()を使用
  • .stop()を使用して、前のアニメーションをクリアし、最後にジャンプします。
于 2012-07-05T01:48:44.797 に答える