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

这些函数由普通变量表示。
在纯 JavaScript 中,这看起来像这样:

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

test(function(){ alert("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."); } 
});

此示例将产生两个警报,一个显示“Hi!”,另一个显示“Hello.”。

于 2012-11-11T11:38:15.737 回答
0

您可以使用匿名函数(如示例)或传递存储在对象/变量中的函数。这取决于您是否需要多次使用此类回调。

$('#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 回答