Следующий код отображает 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>
Однако, если я заменим function() {alert(i);}
на foo
и определю function foo() { alert(i); }
, я получу ошибку variable i is not defined
.
Итак, как передать параметры (кроме события) обработчикам событий?Я думаю, что определение обработчика событий (в данном случае foo()
) в качестве именованной функции сделает код чище, если обработчик событий будет длинным и сложным.