1

スクリプトの後半で言及する特定の div を上下にスライドする関数を構築しようとしています。コードは次のとおりです。

<!DOCTYPE html>
<html>
<head>
  <style>
  div { background:yellow; border:1px solid #AAA; width:80px; height:80px; margin:0 5px; float:left; }
  div.colored { background:green; }
  </style>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
  <button id="run">Run</button>

  <div></div>
  <div id="mover"></div>
  <div></div>
<script>

   $("button#run").click(function(){
    $("div:animated").toggleClass("colored");
   });

   function animateIt() {
    return $(this).slideToggle(5000, animateIt);
   }

    $("div#mover").animateIt();

</script>

</body>
</html>

しかし、「Uncaught TypeError: Object [object Object] has no method 'animateIt'」というエラーが表示されます

ここにフィドルがあります

前もって感謝します。シア…

4

2 に答える 2

3

animateItjQuery メソッドではありません。通常の関数として呼び出し、要素を渡します。

function animateIt ( $element ) {
   $element.slideToggle(5000, function (){
      animateIt($element);
   });
}

animateIt( $("div#mover") );​

更新されたフィドルは次のとおりです。http://jsfiddle.net/ZcQM7/2/


jQuery メソッドにしたい場合は、プラグインに変換する必要があります。

$.fn.animateIt = function () {
    var $this = this;
    this.slideToggle(5000, function () {
       $this.animateIt();
    });
};

$("div#mover").animateIt();​

これがあなたのフィドルです。別の更新があります:http://jsfiddle.net/ZcQM7/1/

于 2013-01-02T21:08:25.000 に答える
1

animateIt()コードで宣言した関数であり、jQuery に属していません。

直接呼び出す必要があります。

function animateIt() {
   return $("#mover").slideToggle(5000, animateIt);
}

animateIt();
于 2013-01-02T21:08:47.097 に答える