2016-06-16 72 views
2

在我的代碼,我有這樣的:瞭解處理程序的jQuery

<script type="text/javascript"> 
    $(document).ready(function (e) { 
     $('#EventCreate').click(function (e) { 
      location.href = '@Url.Action("Create", "AEvents")'; 
     }); 
    }); 
</script> 

<button id="EventCreate" type="button" class="btn btn-info" style="float:right;">Create New Event</button> 

現在這個完美的作品,但我的使命是瞭解的,爲什麼它的工作原理的各個方面。

我已經做了一些閱讀here但它還沒有解決在我的腦海中。另外,在引用中,所提供的所有示例都沒有處理程序。

我也試過調試,看看e有沒有運氣。

我的問題是爲什麼要有e?我知道e事件處理而是將這項工作:

<script type="text/javascript"> 
    $(document).ready(function (/* no event handler */) { 
     $('#EventCreate').click(function (/* no event handler */) { 
      location.href = '@Url.Action("Create", "AEvents")'; 
     }); 
    }); 
</script> 

任何幫助/解釋將不勝感激。

+0

上面的'e'實際上是事件對象,它給你提供了什麼觸發事件的一些基本信息,比如任何按鍵或鼠標位置,事件的目標是什麼。 –

+0

我一直都知道'e'是一個可以傳遞的變量,當事件被觸發時可以傳遞這些事件的具體細節,但並不需要傳遞它。只有當你打算對細節做些什麼 – Jorrex

+0

'e'不是**「事件處理程序」。它是*事件對象*。事件處理函數本身就是函數。事件對象是一個jQuery提供的圍繞瀏覽器創建的本地事件對象的包裝器。 – Pointy

回答

3

e/event /在這方面evt實際上是一個Event Object事件處理程序。這是傳遞給事件處理程序/偵聽器回調函數的參數。

這表示該事件發生時的狀態,併爲實際事件提供有價值的上下文。只有在需要事件本身的上下文數據時才需要引入。否則,它可以省略,就像你可以在JavaScript中使用大多數不需要的參數一樣。

例如,舉一個簡單的輸入處理程序:

document 
 
    .getElementById('example') 
 
    .addEventListener('change', onChange, false); 
 

 
function onChange(e) { 
 
    console.log(e.target.value); // value of input 
 
}
<label>Example input</label> 
 
<input type="text" id="example" placeholder="Example."/>

當一個聽衆綁定到change事件,您可以訪問e參數,它是一個事件對象。使用該對象,您可以在更改後讀取輸入的當前值。

2

eevent object傳遞給匿名回調函數。

它是不是強制要明確說明它在參數列表中,您的代碼將工作完全相同(假設您不試圖引用它)。

如果您願意,您甚至可以通過arguments陣列(arguments[0])訪問它,但在這種情況下會很渺茫。

重點是它將被傳遞到你的函數中,而不管你是否將它包含在你的函數參數中。

+0

不,「e」不是「事件處理程序」。事件處理函數是函數。函數的參數(在本例中爲'e')是事件對象。 – Pointy

+0

@Pointy謝謝,我更新了我的答案 –