2013-01-10 56 views
1

我想通過一個特定的背景下,下面點擊綁定的方法:設置一個匿名函數的「這個」背景下一個jQuery方法

$(document).ready(function(){ 

    var o = { 
     name : 'I\'m object O' 
    }; 

    $('#my-button').click(function(){ 
     alert(this.name); 
    }.call(o)); 
}); 

的問題是,這個被,將觸發頁面負載。有沒有一種方法可以將上下文綁定到Click處理程序的匿名函數,並且只有在點擊事件觸發後才觸發它?你也可以解釋爲什麼它在頁面加載時被觸發,而不是點擊事件。

回答

7

使用$.proxy

$("#my-button").click($.proxy(function() { 
    alert(this.name); 
}, o)); 
+0

完美的作品感謝 – BIOS

1

它不工作,因爲你在呼喚它的聲明的時候這個匿名函數。試試這個:

$(document).ready(function(){ 

    var o = { 
     name : 'I\'m object O' 
    }; 

    $('#my-button').click(function(){ 
     function(){ 
      alert(this.name); 
     }.call(o) 
    }); 
    /* 
    * Or shorter: 
    * $('#my-button').click(function(){ 
    *  alert(o.name); 
    * }); 
    */ 
}); 
+0

謝謝你這個答案! upvoted,因爲它解釋了爲什麼我發生的問題以及如何解決它在香草js :) – BIOS

0

的$(document).mousedown(函數(E){

//做的東西

}

+0

完全無關的問題。 – EleventyOne

相關問題