2015-02-07 103 views
1

我一個自定義jQuery插件的工作,我已經給下面的選項indepandently修改相應的插件:如何發送回調方法,另一個回調方法

onSuccess: false,    // callback 
afterSuccess: false,    // callback 
beforeRequest: 'searching ...', 

我這是怎麼處理這些回調我的插件,

/* --------------- Click Event on Dynamic Elements ------------------ */ 
this._afterSuccess(this.parent, this.$el, this.extraElement, this._removeContainer); 

正如你可以在上面的代碼this._removeContainer看到的是,我想送afterSuccess回調的方法。

_afterSuccess: function(parent, element, extraElement, removeContainer) { 

     var that = this; 

     if(typeof this.options.afterSuccess == "function") { 
      // Trigger callback if found 
      this.options.afterSuccess.call(this, parent, element, extraElement, removeContainer); 
     } 
     else { 
      parent.on('click', 'li a', function(e) { 
       e.preventDefault(); 

       var id = $(this).data('key'); 
       var text = $(this).text(); 

       that.$el.val(text); 
       that._removeContainer(); 
       that.extraElement.val(id); 
      }); 
     } 
    }, 
    _removeContainer: function() { 
     this.response_container.html(''); 
     this.extraElement.val(''); 
    }, 

我這是如何實現的插件:

$('#some_element').MyPlugin({ 
    afterSuccess: function(parent, element, extraElement, removeContainer) { 
      parent.on('click', 'li a', function(e) { 
       e.preventDefault(); 

       var id = $(this).data('key'); 
       var text = $(this).text(); 

       element.val(text); 
       // Not working Generating Error 
       removeContainer(); 

       extraElement.val(id); 
      }); 
     } 
}); 

removeContainer()產生的誤差的不確定「response_container」有沒有更好的方式來調用this._removeContainer()afterSucess回調方法?或者我錯過了什麼?

回答

2

儘量設置上下文removeContainer,因爲現在在removeContainerthis指全球window,但在window沒有response_container,這樣

this.options.afterSuccess.call(this, parent, element, extraElement, $.proxy(removeContainer, this)); 

更新

this.options.afterSuccess.call(this, parent, element, extraElement, removeContainer.bind(this)); 
相關問題