具有自定义回调函数的jQuery函数

时间:2012-11-11 11:16:34

标签: jquery jquery-plugins

有许多jQuery函数,可以与一些回调一起用作参数。 例如:

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

有人可以解释一下,如何正确创建这样的功能?如何做自己“创造”或“开始”等事件?感谢。

2 个答案:

答案 0 :(得分:0)

您可以使用匿名函数(如示例中所示)或传递存储在object / variable中的函数。这取决于你是否需要使用这样的回调一次。

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

至于我,我更喜欢创建接口,而我正在使用匿名函数将执行委托给需要参数的正确API调用。有时开销很小,但允许创建统一的接口,而不考虑如何在事件回调中的范围内实现它们。

答案 1 :(得分: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."); } 
});

此示例将生成两个警报,一个显示“嗨!”,另一个显示“Hello。”。