2015-02-10 89 views
0

我正在閱讀有關jQuery on()是首選使用,而不是代理()。所以我在徘徊,我將如何使用on()解決以下情況?jQuery代理vs

$(document).ready(function() { 

    //$("h1").bind("click",doeFunction); 
    $("h1").click($.proxy(function(e){ 
     console.log(e.currentTarget); 
     console.log(this); 
    }, this)); 

}); 

我希望能夠同時'保持'範圍,並且還要到達h1按鈕。 我如何使用.on()來管理這個?

此致米歇爾

回答

0

$.proxy是一個簡化的實現中使用的創建這將在適當的範圍內(this)執行的新功能的方法Function.prototype.bind的。看你的貼吧的代碼是不是necessay你的情況使用$.proxy,你可以直接訪問document對象:

$(document).ready(function() { 
    // this === document 
    $("h1").click(function(e) { 
     // this === h1 element 
     console.log(document); 
    }); 
}); 

至於$.fn.on方法而言,你可以同時使用click像你現在這樣,或者你可以去

$("h1").on("click", function() { 
    // 
}); 
+0

謝謝,我明白了。在我的簡單例子中,「this」是文件,這一切都是清楚的,但如果你不知道它是誰的話。例如,在你寫的插件中? – 2015-02-10 11:56:46

+0

我無法想象當你想知道你定義插件的上下文的情況。插件不必知道這一點,不應該依賴來自外部的'this'。但是如果你需要在某些情況下保留'this',你應該使用'bind' /'proxy',這是他們的目的。 – dfsq 2015-02-10 12:00:12