2015-02-07 157 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)); 
相关问题