0

パラメータとしていくつかのコールバックで使用できる多くのjQuery関数があります。例えば:

$('#id').draggable({
  create: function( event, ui ) {
    // triggered when the draggable is created
  },
  start: function( event, ui ) {
    // triggered when dragging starts
  }
  ...
});

誰かがそのような関数を適切に作成する方法を説明できますか?そして、自分で「作成」や「開始」などのイベントを行うにはどうすればよいですか?ありがとう。

4

2 に答える 2

0

(例のように)無名関数を使用するか、オブジェクト/変数に格納されている関数を渡します。このようなコールバックを1回以上使用する必要があるかどうかによって異なります。

$('#id').draggable({
  create: function( event, ui ) {
    // triggered when the draggable is created
  },
  stop: function (event, ui) {
      controller.stop(event.element);
  }
  start: scope.functionName
  ...
});

私はインターフェースを作成することを好み、匿名関数を使用して実行を委任し、必要な引数を使用してAPI呼び出しを修正しています。オーバーヘッドが少ない場合もありますが、イベントコールバックのスコープに実装する方法を考えなくても、統一されたインターフェイスを作成できます。

于 2012-11-11T11:19:34.893 に答える
0

これらの関数は通常の変数で表されます。
プレーンな JavaScript では、これは次のようになります。

function test(aFunction){
    if ( typeof aFunction == "undefined" ) return null;
    if ( typeof aFunction == "function" ) aFunction();
}

test(function(){ alert("Hello!"); });

これにより、「Hello!」というアラートが表示されます。JSON-Object ({}) では、内部のすべての要素を反復処理するだけです。

function test(someObject){
    if ( typeof someObject != "object" ) return null;
    for ( var i in someObject )
        if ( someObject.hasOwnProperty(i) && typeof someObject[i] == "function") someObject[i]();
}

test({
    a: function() { alert("Hi!"); },
    b: function() { alert("Hello."); } 
});

この例では、1 つは "Hi!" を表示し、もう 1 つは "Hello." を表示する 2 つのアラートを生成します。

于 2012-11-11T11:38:15.737 に答える