我想在jQuery中將函數引用作爲事件處理函數傳遞。我想在下面的簡單的例子來使用速記像...在jQuery中將函數引用作爲事件處理函數傳遞
$("a").click(console.debug.bind(undefined,this));
...而不是傳遞明確整個函數體:
$("a").click(function() {
console.debug(this)
});
此外,我想訪問元素在我的速記功能中由jQuery選擇(並將它們作爲參數傳遞)。換句話說:我希望$("a")
的結果爲this
(或任何其他將檢索結果的代碼)。
到目前爲止,我已經試過:
var a = function() {
console.debug(this);
};
var b = console.debug.bind(undefined,this);
$("a").click(function() {console.debug(this)}); // prints link
$("a").click(a); // prints link
b(); // prints Window
$("a").click(console.debug.bind(undefined,this)); // prints Window & jQuery.Event
這裏是小提琴: https://jsfiddle.net/hbqw2z93/1/
我的問題是:
- 是否有可能使用這樣的建設和滿足所有要求,沒有附加變量的定義 - 只有一行如上所示?
- 是否可以使用描述的方法訪問jQuery的選擇結果?
- 爲什麼在給定範圍內
this
成爲'合併'Window和jQuery.Event對象?
傳遞undefined是相同的,因爲沒有通過。它不會像這樣使用undefined。此外,它只是將窗口傳遞給調試方法,「this」不傳遞給調試。 –
當然'this'通過了 - 這就是他在控制檯中接收兩個對象的原因。和評論關於undefined只是一個語言abracadabra :)因爲函數不會有'this',它肯定會覺得它實際上使用'undefined'作爲'this':)) –