2013-10-29 62 views
0

我有一个简单的jQuery函数可选参数,我只想传递控制名称,事件名称和值或函数名称,而不是绑定到传递的控件。如何绑定动态功能到动态事件

jQuery函数

BindEvents: function (options) { 

    var defaults = { 
     Control: null, 
     Events: null 
    } 
    settings = $.extend({}, defaults, options); 

    if (Events != null) { 
     $(Control).on(Events['name'], function() { 
      'How to call passed function'; 
     }); 
    } 
} 

调用函数

$.fn.BindEvents({ 
    Control: "#txtTest", 
    Events: { "name": "focus", "value": "$.fn.test()" } 
}); 
+0

$(Control).on(Events ['name'],Function('e',Events.value)); – dandavis

+0

在你的行'if(Events!= null)''中,事件指的是什么? settings.Events? – moritzpflaum

回答

0

1)你忘了使用 '设置' 前缀:

BindEvents: function (options) { 
    // defaults do not make sense this way, but they probably have a sane default in your code, right? 
    var defaults = { 
     Control: null, 
     Events: null 
    } 
    settings = $.extend({}, defaults, options); 

    if (settings.Events != null) { 
     $.each(settings.Events, function(eventName, handler) { 
      $(settings.Control).on(eventName, handler); 
     }); 
    } 
} 

2)调用BindEvents与一个函数refe而不是一个字符串。我也改变了Event对象:

$.fn.BindEvents({ 
    Control: "#txtTest", 
    Events: { "focus": $.fn.test } 
});