2013-10-29 61 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 } 
});