2010-06-08 67 views
1

保存jQuery的回調函數也許我錯過了什麼,但可以說我有這樣的:在一個單獨的文件

$('a.delete').click(function(){ 
    resp=window.confirm("Are you sure you want to delete this?"); 
    if(resp) 
     return true; 
    else 
     return false; 
} 

現在,我想的是回調函數保存到一個單獨的js文件,因爲我將用它在幾頁。我的邏輯告訴我這樣做:

$('a.del').click(delete_element()); 

有我的js文件是這樣的:

function delete_element(){ 
    resp=window.confirm("Are you sure you want to delete this?"); 
    if(resp) 
     return true; 
    else 
     return false; 
} 

這是行不通的。每當我的頁面加載時,即使我沒有點擊鏈接,它也會顯示確認窗口。

很明顯,我的邏輯這次失敗了。我錯過了什麼?

+1

的風格一點:你可能只是這樣做:'返回確認( '...'); ' – nickf 2010-06-08 03:18:33

+0

不錯的建議:)謝謝。 – 2010-06-08 03:28:41

回答

2

$('a.del')。click(delete_element());

即調用函數delete_element()並希望函數被返回。

$('a.del').click(delete_element); 

(注意missing())會將click處理程序設置爲delete_element。

+0

完美。比我想象的容易。非常感謝。 – 2010-06-08 03:25:34

1

試試;

$('a.delete').click(function(){ 
    delete_element() 
} 

編輯

我路過的參考元素刪除對delete_element功能,並從那裏作爲函數的名字說delete_element不ask_to_delete_element刪除它。

+0

+1,將函數包裝在一個匿名函數中,因爲它沒有包含在函數中,JavaScript引擎可能在它不存在的時候解析函數,通過將函數包裝在一個函數中,引擎只會解析函數點擊時間。當你的頁面被完全加載時,女巫會變成 – RobertPitt 2010-06-08 03:03:23

+0

它可以工作,但是它不會將結果傳遞給父函數。我可能需要抓取delete_element()的結果,並相應地返回true或false。 – 2010-06-08 03:04:33

+1

將htat切換到「return delete_element()」將修復真實/錯誤的事情。 – 2010-06-08 03:17:13

0

如何

function deleteElement() { 
    return window.confirm("Are you sure you want to delete this?"); 
} 

$('a.delete').click(deleteElement); 

或者,如果這是你的網頁標準的行爲:

$('a.delete').live('click', function() { 
    return window.confirm("Are you sure you want to delete this?"); 
}); 
相關問題