2013-01-10 80 views
0

我在頁面上有一些html,而在我的頭上我有$("#someelement").click(alert("click"));。無論#someelement是否存在,當我由於某種原因加載頁面警報熄滅。但是,當我有$("#someelement").click(function(){alert("click")});時,它不會執行。這是爲什麼?在頁面加載時執行的JQuery事件處理程序

+1

你包裹在$(文件)。就緒()? – Praveen

+0

好問題。我已經嘗試過,沒有這個,兩種方法的結果都是一樣的。 – Bluefire

+0

你能發表該代碼嗎? – Praveen

回答

2

alert("foo")將總是立即提醒foo,它不會返回可以作爲事件處理程序傳遞的函數。相反,您需要將一個函數傳遞給jQuery事件綁定方法。

$("#someelement").click(function(){ 
    alert("click"); 
}); 

此外,如果這個代碼是在<head></head>,它需要被包裹在$(document).ready()

$(document).ready(function(){ 
    $("#someelement").click(function(){ 
     alert("click"); 
    }); 
}); 

alertwindow對象上定義的方法,例如,window.alert。它期望一個參數是一個字符串,並且它必須是窗口對象的成員。在alert之後放置("string"),如alert("string")將執行該功能,導致彈出窗口爲"string"。當您將alert("string")作爲參數添加到函數時會發生同樣的事情,當所述代碼運行時會出現彈出窗口。

+0

謝謝。出於興趣,這是怎麼回事? – Bluefire

+0

因爲alert(「Foo」)'不返回函數。 '$ .fn.click()'需要一個函數作爲第一個參數傳遞。這正是JavaScript的工作原理。 –

0

試試這個:

$(document).ready(function() { 
    $("#someelement").click(function(){alert("click")}); 
}); 

這裏是一個工作Fiddle

相關問題