2013-04-30 79 views
0

我閱讀下面的,但還是要討論.... Meaning of evt = (evt) ? evt : window.eventjQuery的 - 功能參數

//會傳遞EVT需要,因爲它不是在函數中使用??? ---試圖讓我的思想圍繞這個jQuery的東西。

A)

$('#' + _ids.btnPrintServiceCode).on('click', function (evt) { 
     alert('Hello World') 
    }); 

OR

B)

$('#' + _ids.btnPrintServiceCode).on('click', function() { 
     alert('Hello World') 
    }); 
+0

備註:無論你想要什麼,你都可以調用'evt'。你可以稱它爲'function(IAmMoojjoo)',它仍然可以工作:[demo](http://jsfiddle.net/dirtyd77/sZEuC/1/)。也開始使用['console.log()'](http://stackoverflow.com/questions/4743730/what-is-console-log-and-how-do-i-use-it)而不是'alert( )';它是一個更好的調試工具。 – Dom 2013-04-30 18:10:36

回答

3

你不需要通過evt如果不使用它...它是可選的...然而,它不會產生問題...

你基本上通過evt如果你需要聽的事件......說你要防止某些元素的默認行爲,所以u需要EVT這裏

HTML

<a href="#"></a> 

jQuery的

$('a').on('click', function (evt) { 
    evt.preventDefault(); // this will prevent the deafult behaviour of that element 
    alert('Hello World'); 
}); 

$('input').keyup(function(e){ //here we need to pass e as we are using e to get ther keyCode that was pressed 
    if(e.keyCode == 8) 
    { 
     alert('test'); 
    } 
}); 
+0

所以它會傷害任何東西。我正在從另一位開發人員那裏接受工作? – Moojjoo 2013-04-30 18:02:12

+1

事件對象總是被傳遞給你的函數。您不必爲其添加參數。 – 2013-04-30 18:02:27

+0

那麼爲什麼會寫成像A)?希望更好地理解這一點。提前謝謝你。 – Moojjoo 2013-04-30 18:03:29

1

這樣想吧。可以說我有這樣的功能:

function foo (bar) { 
    alert("worky"); 
} 
foo("foobar"); // worky 

由於函數裏面我絕對實際使用bar,我可以從參數列表中刪除bar簡化功能。

function foo() { 
    alert("worky"); 
} 
foo("foobar"); // worky 

兩者都會有相同的結果。事件綁定也是如此。既然你從不使用evt,你沒有理由把它傳遞給函數,但是如果你這樣做,它不會傷害任何東西。

如果以前的開發人員總是將evt傳遞給事件處理函數回調,則應該繼續這樣做以保持代碼一致,但這完全取決於您。

+0

+1不錯,簡單 – Dom 2013-04-30 18:12:49

+0

太棒了,就是這樣...謝謝---- LIGHTBULB ...丁丁丁 – Moojjoo 2013-04-30 18:19:09