2012-10-03 65 views
2

我想一個腳本來創建每個功能的事件,然後注入事件觸發到函數結束。動態事件的建築在JavaScript

這樣我可以清楚地看到,當每個功能已經完成,並且使用像鉤子事件等功能

如果我可以動態地做到這一點,我可以添加,因爲我喜歡的許多新的功能,而無需創建和追加這些事件。

這裏有我想要做的,這不會實際工作一個基本的例子,但它給你的想法。我一直在使用jQuery,但我會接受任何JavaScript框架和任何方法。

var obj = {}; 

(function() 
{ 
    this.init = function() 
    { 
     // loop through every function 
     $.each(this, function(k, v) 
     { 
      // create an event for every function 
      $('body').bind(v, function() 
      { 
       console.log('Event: ' + v + ' Finished'); 
      }); 

      // Add a event trigger into each specific function in the loop 
      this[v].call($('body').trigger(v)); 
     }); 
    } 

    this.another_function = function() 
    { 
     // do something 
    } 

    this.some_function = function() 
    { 
     /do something 
    } 

}).apply(obj); 

obj.init(); 

感謝

(編輯)腳本本身基本上呈現一個日曆,但也有很多回調,Ajax請求,按鈕。等等......如果我能配合各功能下降到一個事件,它將使擴展當我的生活更輕鬆,增加新的功能等等

+0

你可以給你有什麼作爲輸入更多詳情,請與功能/處理的一些例子嗎? – vittore

+0

我在編輯中添加了一些更多細節,但只有更多。它只是一個想法,如果可能的話,我可以爲我工作。 – outrunthewolf

回答

1

遍歷每個功能,用新的,這就要求原有的更換函數在同一個對象上並觸發body上的事件。

var obj = { }; 

(function() 
{ 
    this.init = function() 
    { 
     var self = this; 
     foreach(var name in this) { 
      if (typeof k !== 'Function') continue; 
      if (name ==='init') continue; 

      var original = this[name]; 

      var newFunc = function() { 
       original.apply(self, arguments); 
       $('body').trigger(name); 
      } 

      this[name] = newFunc; 
     } 
    } 

this.another_function = function() 
    { 
     // do something 
    } 

this.some_function = function() 
    { 
     /do something 
    } 

}).apply(obj); 

obj.init(); 
+0

是的,我看到你從這裏來的,但我想,不僅調用事件動態,但自動觸發每個事件時各功能完成了它的任務。 – outrunthewolf

+0

哦,看來我得到你想要在這裏存檔。看到變化 – vittore

+0

@outrunthewolf更新例如 – vittore