2014-11-14 22 views
1

我想加載使用$ .proxy click事件的函數的函數。 如果我使用下面的點擊事件加載函數,然後一切正常。這是工作,其工作不

$('element').click(function(){ 
    // Perform other things 
    $.proxy(this.doProcess, this); 
}); 

$('element').click($.proxy(this.doProcess, this)); 

點擊事件正如你可以看到,我想在裝貨前的單擊事件進行其他的事情

點擊事件功能。能否請你幫我弄清楚,爲什麼它不加載如果我使用「點擊(函數()...」,而不是簡單地「點擊()..」

回答

1

因爲第一個片段的點擊函數調用。返回的功能在第二片斷您結合當前this值的功能,但你不調用返回的功能可以使用調用運算符(())調用函數:

$.proxy(this.doProcess, this)(); 

請注意,在匿名函數(這是當前的事件處理)的背景下this並不是指外部環境的this關鍵字的值,你可以緩存VALU E:

var that = this; 
$('element').click(function() { 
    // Perform other things 
    $.proxy(that.doProcess, this)(/* arguments go here */); 
//   |    | 
//   |    ----- refers to the clicked element 
//   ----- reference of the outer context's `this` value 
}); 
+0

感謝您的快速反應。我試過了,但其實我使用的是第三方插件它沒有加載功能doProcess – orbnexus 2014-11-15 00:34:12

+1

@mak歡迎您,我已經創建了一個的jsfiddle演示,http://jsfiddle.net/Lnxmg5ub/ – undefined 2014-11-15 00:46:09

+0

,我想根據需求定製功能。無論如何,如果我可以將您的電子郵件中的代碼文件發送給您?你只是指出了這個問題? – orbnexus 2014-11-15 01:07:54