以下代碼呈現3個帶有標籤「1」,「2」和「3」的按鈕。點擊每個按鈕將提醒標籤。如何將參數(事件除外)傳遞給事件處理程序?
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
var a = [1, 2, 3];
$.each(a, function(i, ai) {
$('<button />').text(i).appendTo('body')
.click(function() {alert(i);});
});
});
</script>
</head>
<body>
</body>
</html>
但是,如果我有foo
取代function() {alert(i);}
和定義function foo() { alert(i); }
,我會得到的variable i is not defined
錯誤。
那麼如何將參數(事件除外)傳遞給事件處理程序?我認爲定義事件處理程序(在這種情況下爲foo()
)作爲命名函數將使代碼更清潔,如果事件處理程序很長並且很複雜。
它不應該是'foo.call'? 'apply'接受一個數組。 – 2010-09-22 06:47:33
@Matthew Flaschen:thx - 我修正了這個問題。 – jantimon 2010-09-22 06:49:47
爲什麼要創建一個數組? 'foo.call(this,i);'會簡單一點。 – 2010-09-22 07:12:05