2012-11-30 29 views
1

所以我有這個JS,當我運行代碼時我得到了「e is not defined」 - 我錯過了什麼?e.preventDefault - e沒有定義

$('ul.result-filters > li a').click(toggleFilters()); 

function toggleFilters(e) { 
    e.preventDefault(); 
    //do more stuff 
} 
+3

失去'()''後toggleFilters'。 –

+0

oops沒有被接受。 – Jai

回答

9

使用此:

$('ul.result-filters > li a').click(toggleFilters); 

你被路過的toggleFilters()的結果,而不是傳遞函數本身。

1

您正在調用函數而不是傳遞處理程序名稱來單擊。卸下toggleFilters括號()

變化

$('ul.result-filters > li a').click(toggleFilters()); 

$('ul.result-filters > li a').click(toggleFilters); 
4
$('ul.result-filters > li a').on('click', toggleFilters); 

function toggleFilters(e) { 
    e.preventDefault(); 
    //do more stuff 
} 

當它立即執行,並將結果傳回該功能後加入括號。要僅引用該函數並在點擊時調用它,請刪除括號。

這也會使事件可用於toggleFilters功能!

1

總是可以做e = e || window.event以確保您有活動。

0

您需要使用函數名稱而不是函數調用toggleFilters()。

$('ul.result-filters > li a').on('click', toggleFilters); 

function toggleFilters(e) { 
e.preventDefault(); 
//do more stuff 
} 

由於